【Java技术】Collection框架体系结构
本文系装载,仅供参考学习 来源:源码时代
Collection的框架体系是面试会经常问的问题:Collection框架体系主要分为Set接口和List接口,Queue接口,每个接口都有自己的特点;
List接口特点:允许重复的,对集合中对象进行索引;有顺序的;
比较具有代表性两个:ArrayList和LinkedList;
那ArrayList和LinkedList的区别是什么呢?
①存储方式上面的区别:
ArrayList: 基于数组实现的容器类;如下代码实现:
LinkedList:基于链表实现的容器类;
②共性:ArrayList和LinkedList都是List接口的实现类;
③效率上面的区别:
ArrayList在添加,删除的时候,速度慢;在查找的时候,速度快;
LinkedList在添加,删除的时候,速度快,在查找的时候,速度慢;
LinkedList可以充当队列,堆栈,多一些操作头尾的方法;比如addFirst, addLast方法;
Set接口特点:不允许重复的值,没有顺序的;
比较具有代表性的两个:HashSet和TreeSet
HashSet和TreeSet的区别:
HashSet判断重复的标准:通过对象的hashCode方法和equals方法;
HashSet本质通过HashMap实现;
TreeSet判断重复的标准:添加到TreeSet里面的对象,要么需要实现Comparable接口,覆写compareTo方法(自然排序),要么实现Comparetor接口,覆写compare方法(比较器);
TreeSet本质通过TreeMap实现 ,如下代码所示:
Queue接口特点:在处理元素前用于保存元素的Collection;队列通常FIFO(先进先出)的方式排列各个元素;LinkedList也是实现了Queue接口的;
Collection是层次结构的根接口,但是它上面还有Iterable接口,它继承Iterable,说明什么情况?
继承Iterable,说明可以调用Iterable接口里面的iterator方法,得到一个迭代器(Iterator),通过这个迭代器,可以进行遍历元素;Iterator下面还有一个子类叫做ListIterator表示一个双向的迭代器,可以进行正向迭代,还可以进行反向迭代器;
如下Collection体系结构图: