集合是Java语言中比较重要的结构之一。接下来针对学习基础人员进行简单的讲解:
Java最顶级集合接口Collection ,它继承了Iterable<E> ,大家都知道Iterable 接口有一个方法就是迭代器Iterator<T> iterator()。
二级集合接口分别为List和Set,他们都继承了Collection接口,下面分别介绍这两个接口:
1、List 自己的接口详述:size(),boolean isEmpty()、boolean contains(Object o)等,当然它继承了Collection 所以也有迭代器Iterator<E> iterator();
1.1 ArrayList是List的一种实现方式。它继承了AbstractList,同时也实现RandomAccess、Cloneable、Serializable。在AbstractList里面它是继承了AbstractCollection同时实现了List。ArrayList 每次初始化的时候会给List一个大小为10的默认值: public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
ArrayList 比较适合于对数据的查询,因为它完全是基于数组来进行处理的。
1.2LinkedList也实现了List、Deque<E>,、Cloneable,、Serializable接口同时继承了AbstractSequentialList。
AbstractSequentialList作为一个抽象类,它同时也继承了AbstractList。
LinkedList比较适合于数据的增加和删除以及修改,链表结构的数组其效率更高。
1.3Vector实现了List<E>、RandomAccess、 Cloneable、Serializable接口同时继承AbstractList。向量之所以是线程安全的,是因为在向量这类里面使用了synchronized来修饰方法。
2、Set有序的集合 在Set 内部是不存在相同的值得。在每次进行新增或者修改 都会生成一个Hash去找到这个位置 存入数据。
2.1HashSet 实现了Set<E>、Cloneable, Serializable接口同时继承了AbstractSet。AbstractSet继承了AbstractCollection。它的代码里面定义的是Map :private transient HashMap<E,Object> map;
2.2TreeSet 实现了NavigableSet<E>、Cloneable、Serializable接口同时继承来了AbstractSet,之所以TressSet是有序的 是因为它实现了NavigableSet而这个NavigableSet继承了SortedSet。
在后期会讲解树的结构 ,其底层实现也是基于TreeSet来做的。