Java Collection class
Collection是最基本的集合接口,一個(gè)Collection代表一組Object。Java SDK不提供直接繼承自Collection的類,提供的類都是繼承自Collection的子接口(如List和Set)
語法
public interface Collection<E> extends Iterable<E>{}
Collection是一個(gè)接口,是高度抽象出來的集合,他包含了集合的基本操作:添加、刪除、查找、清空、遍歷、大小等。
iterator接口
無論Collection的實(shí)際類型是什么,都支持一個(gè)iterator()方法,迭代每一個(gè)元素。
Iterator方法
boolean hasNext() //如果仍有元素可以迭代,則返回true;
E next() //返回迭代的下一個(gè)元素;
void remove() //從迭代器指向的集合中移除迭代器返回的最后一個(gè)元素。
Iterator實(shí)例
Iterator it = collection.iterator(); //獲得一個(gè)迭代子
while( it.hasNext() ) {
Object obj = it.next(); //得到下一個(gè)元素
}
繼承體系
Collection
|-----List 有序可重復(fù),可有null值
|----ArrayLi 非線程安全,底層為數(shù)組,查詢快,增刪慢,效率高
|----LinkedList 非線程安全,底層為鏈表,查詢慢,增刪快,效率高
|----Vector 線程安全,底層為數(shù)組,查詢快,增刪慢,效率低。
|-----Set 元素不可重復(fù)的collection
|----HashSet 底層由HashMap實(shí)現(xiàn),通過對象的hashCode方法與equals方法來確保插入元素的唯一性,無序存儲(chǔ)(存儲(chǔ)順序和取出順序不一致)
|----LinkedHashSet 底層由哈希表和鏈表組成。哈希表保證元素的唯一性,鏈表保證元素的有序性(存儲(chǔ)和取出順序一致)
|--TreeSet 基于TreeMap的NavigableSet實(shí)現(xiàn)。使用元素的自然順序?qū)υ剡M(jìn)行排序,根據(jù)創(chuàng)建set時(shí)提供的Comparator進(jìn)行排序,元素唯一

Collection接口繼承關(guān)系
總結(jié)
- List是一個(gè)有序的隊(duì)列,每一個(gè)元素都有它的索引,第一個(gè)元素的索引值是0。List的實(shí)現(xiàn)類有LinkedList、ArrayList、Vector和Stack;
- Vector類似于ArrayList,但Vector是線程安全的;
- Stack繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧;
- set是一個(gè)不允許有重復(fù)元素的集合;
- 盡量返回接口而非實(shí)際的類型,如返回List而非ArrayList,這樣如果以后需要將ArrayList換成LinkedList時(shí),客戶端代碼不用改變。這就是針對抽象編程。