Java集合框架--Collection

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é)

  1. List是一個(gè)有序的隊(duì)列,每一個(gè)元素都有它的索引,第一個(gè)元素的索引值是0。List的實(shí)現(xiàn)類有LinkedList、ArrayList、Vector和Stack;
  2. Vector類似于ArrayList,但Vector是線程安全的;
  3. Stack繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧;
  4. set是一個(gè)不允許有重復(fù)元素的集合;
  5. 盡量返回接口而非實(shí)際的類型,如返回List而非ArrayList,這樣如果以后需要將ArrayList換成LinkedList時(shí),客戶端代碼不用改變。這就是針對抽象編程。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容