1. arraylist
基於陣列方式實現,無容量的限制。
在執行插入元素時可能要擴容,在刪除元素時並不會減少陣列的容量。
如果希望相應的縮小陣列容量,可以呼叫trimtosize()
在查詢元素時要遍歷陣列,對於非null的元素採取equals的方式尋找。
非執行緒安全。
2. linkedlist
基於雙向鍊錶機制實現。
元素的插入、移動較快。
非執行緒安全。
3. vector
基於object陣列的方式來實現的。
基於synchronized實現的執行緒安全的arraylist。
在插入元素時容量擴充的機制和arraylist稍有不同:
如果capcacityincrement > 0, 則object陣列的大小擴大為現有size加上capcacityincrement;
如果capcacityincrement < 0, 則object陣列的大小擴大為現有size的兩倍;
4. stack
基於vector實現,支援lifo。
5. hashset
基於hashmap實現,無容量限制。
不允許元素重複。
非執行緒安全。
6. treeset
基於treemap實現,支援排序。
非執行緒安全。
7. hashmap
採用陣列方式儲存key、value構成的entry物件,無容量限制。
基於key hash尋找entry物件存放到陣列的位置,對於hash衝突採用鍊錶的方式來解決。
在插入元素時可能會擴大陣列的容量,在擴大容量時會重新計算hash,並複製物件到新的陣列中。
非執行緒安全。
8. treemap
基於紅黑樹實現,無容量限制。
非執行緒安全。
適用場景:
對於查詢和刪除較為頻繁,且元素數量較多的應用,set或map是更好的選擇;
arraylist適用於通過為位置來讀取元素的場景;
linkedlist 適用於要頭尾操作或插入指定位置的場景;
vector 適用於要執行緒安全的arraylist的場景;
stack 適用於執行緒安全的lifo場景;
hashset 適用於對排序沒有要求的非重複元素的存放;
treeset 適用於要排序的非重複元素的存放;
hashmap 適用於大部分key-value的訪問場景;
treemap 適用於需排序存放的key-value場景。
Java集合中常用的介面和類
上圖是集合框架中常用的類和介面 一 用得最多的主要有set,list,map,iterator這幾個介面,set和list介面都是collection介面的子介面,有很多相同的地方,我們只要撐握了collection介面的方法及set和list的用法也就差不多了.set和list 的區別 1 set...
java中常用的幾種集合型別
集合就像陣列一樣,用來存放東西 常用的集合分為list 有序排放 map 以名和值一一對應的存放 set 既無序也沒名 在這三者之中其中list和set是collection介面的子介面,而map不是collection介面的子介面 首先介紹的是集合 一 list 為了學習list,這裡介紹list...
對Java中常用集合的操作
集合 1 由來 物件導向語言會產生很多物件,為了對這些物件進行儲存,操作,就產生了集合。集合存放的是物件的位址,操作的物件是物件。他是可變長度的。物件用於封裝特有資料,物件多了需要儲存,如果物件的個數不定,則使用集合進行儲存。2.特點 1.集合是用於儲存物件的容器 2.集合的長度是可變的。3.集合中...