collections集合的總括。

2022-02-18 07:40:26 字數 3130 閱讀 3694

序言

還有,這份微小型總結肯定是從很多博文中摘取精華拿過來的,因為我還是乙個菜鳥,不能自己寫出自己的見解,還是在學習的路程中,見諒。

大神真的很多,學無止境,學的越多,越發現自己的無知,感謝能站在巨人的肩膀上前行。

、------wzy

一、簡述

這是collection總體的乙個關係圖,很龐大,我就挑我們常用的來講解一下。

集合類這塊,總的來說,就分為兩大類,

1:按照一定順序進行迭代訪問的集合類

2:按照key、value這樣的鍵值對關係進行訪問的集合類

二、第一種,按照一定順序進行迭代訪問的集合類的繼承關係圖,

set介面:無順序,不可重複。

hashset類:方便用於資料的查詢,加入的元素特別要注意hashcode()方法的實現,不是同步的,多執行緒訪問同乙個hashset物件時,需要手工同步

linkedhashset類:根據元素的hashcode值來決定元素的儲存位置,但它同時使用鍊錶維護元素的次序。與hashset相比方便用於資料的增加和刪除,

這兩個就好比arraylist和linkedlist,乙個方便查詢乙個方便增刪

enumset類:專為列舉類設計的集合類,enumset中的所有元素都必須是指定列舉型別的列舉值

list介面:有順序,可以重複

linkedlist類:內部使用鍊錶的形式來儲存資料,在增加和刪除資料上面效能更好

它實現了list介面和deque介面,說明它具有兩邊介面的特性,因此它可以當作乙個雙端佇列來用,也可以當作棧來用,並且它是以鍊錶的形式來實現的,所以查詢效能差,但是增加和刪除操作效能高。

arraylist類:內部使用陣列來儲存資料,也就相當於資料結構的順序表儲存,在查詢資料上面效能好,

vertor類:跟arraylist相比,它是執行緒安全的,而arraylist是執行緒不安全的,

stack類繼承vertor類:看名字,其實就是方便模擬「棧」這種資料結構

queue介面:用於模擬佇列這種資料結構,然後該介面中宣告了一些基本操作的方法。例如:add、offer、remove等

priorityqueue類:priorityqueue儲存佇列元素的順序並不是按照加入佇列的順序,而是按佇列元素的大小重新排序

deque介面:deque代表乙個雙端佇列,可以當作乙個雙端佇列使用,也可以當作「棧」來使用,因為它包含出棧pop()與入棧push()方法。

arraydeque類為deque的實現類:也就是實現了deque介面中定義的方法,解釋跟deque差不多

各種線性表選擇策略

陣列:是以一段連續記憶體儲存資料的;隨機訪問是最快的,但不支援插入、刪除、迭代等操作。

arraylist與arraydeque:以陣列實現;隨機訪問速度還行,插入、刪除、迭代操作速度一般;執行緒不安全。

vector:以陣列實現;隨機訪問速度一般,插入、刪除、迭代速度不太好;執行緒安全的。

linkedlist:以鍊錶實現;隨機訪問速度不太好,插入、刪除、迭代速度非常快。

三、第二種,使用key、value鍵值對的形式進行訪問的集合類。

map介面:定義一些基本的操作,例如put(key,value), containkey(object key)等一系列操作。

hashmap類和hashtable類對比,一般使用hashmap,因為hashtable類是很古老的,據查都不建議用。平常我們也是用hashmap

hashmap類是執行緒不安全的,而hashtable是執行緒安全的

hashmap類可以使用null作為key和value,而hashtable不可以

properties類繼承hashtable類

增加了額外的一些方法,例如:load(inputstream instream)從屬性檔案載入key-value等方法。

可以將key-value用xml檔案的格式儲存,可能就是跟xml檔案打一些交道

linkedhashmap類繼承hashmap類

linkedhashmap從hashmap類繼承而來。以煉表來維護內部順序。很多方面跟linkedhashset類似。linkedhashmap它可以記住key-value對的新增時的順序, 同時避免使用            treemap時效能受到的影響。

sortedmap介面和treemap實現類

類似於sortedset及treeset,treemap也可以自定義比較器(comparable)實現定製排序。它的額外提供的方法也與treeset類似,增加了訪問第乙個、前乙個、後乙個、最              後乙個key-value對的方法,並提供了從treemap中提取子集的方法。treemap不允許null作為key,要不然怎麼比較呢?

identityhashmap類

與hashmap的不同在於,只有兩個key嚴格相等(key1 == key2)時,identityhashmap才認為兩個key相等;而對於普通hashmap而言,只要key1.equals(key2)且hashcode相同即可。同樣允許null值,不能保證順序。

enummap類

enummap是乙個與列舉類一起使用的map實現。它的key必須是單個列舉類的列舉值。enummap不允許使用null作為key,但可作為value。 

各種map實現類選擇策略

正常情況使用hashmap,而不是hashtable。

如果考慮排序,那麼考慮使用treemap。通常treemap比hashmap等在插入、刪除操作時要慢不少,因為它需要在底層採用紅黑樹來管理key-value對。

如果考慮插入時的順序,那麼使用linkedhashmap是個不錯的選擇。

如果想優化垃圾**,建議使用weakhashmap實現類(本文未提及);要求key完全匹配(同一物件),則使用identityhashmap;還有列舉類不多說了。

關於null值:hashtable不允許key為null,也不允許value為null;treemap與enummap不允許key為null;hashmap及其子類linkedhashmap,identityhashmap允許key為null。

List Set集合 Collections工具類

1 list集合 1 list是colleciton介面的乙個子介面,常用的實現類有arraylist linkedlist 2 list集合的特點 1 儲存單個元素,元素可重複,可以儲存多個null 2 儲存有序,存入順序和取出來的順序一致 例如 add 1 add 2 add 3 遍歷列印集合 ...

collections 集合模組

標準庫 collections 是 python 內建的乙個集合模組,裡面封裝了許多集合類。collections模組包含了除list dict 和tuple之外的容器資料型別,如counter defaultdict deque namedtuple orderdict等。這個模組實現了特定目標的...

集合 Collections工具

1.定義 collections是集合類的乙個工具類,它提供了一系列靜態方法用於對容器中的元素進行排序和搜尋等一系列操作。注 collection是乙個集合介面,而collections是乙個有著操作容器的方法的工具類。2.方法 1 reverse list list 使list中的資料發生反轉 1...