1.可重複。
2.可以為空。
3.有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。
常用的實現類有 arraylist、linkedlist 和 vector。
arraylist 最為流行,它提供了使用索引的隨意訪問,而 linkedlist 則對於經常需要從 list 中新增或刪除元素的場合更為合適。
1、arraylist實現類
arraylist底層是用陣列實現的,通過索引下標可以快速的查到資料,所以對資料的查詢操作效率很高
arraylist 執行緒不安全
資料可重複
2、linkedlist實現類
linkedlist底層使用雙向鍊錶實現的,因此它對於資料的增加刪除操作效率較arraylist要高
對資料的查詢需要操作指標,所以查詢操作效率較低;
linkedlist 執行緒不安全
資料可重複
3、vector
通過陣列來實現的,但是效率一般比arraylist低,如果不考慮執行緒安全問題,一般使用arraylist
vector 執行緒安全
資料可重複
1.不可重複。
2.可以為空。
3.無序容器,無法保證每個元素的儲存順序,treeset通過 comparator 或者 comparable 維護了乙個排序順序。
set 介面最流行的幾個實現類是 hashset、linkedhashset 以及 treeset。
最流行的是基於 hashmap 實現的 hashset;treeset 還實現了 sortedset 介面,因此 treeset 是乙個根據其 compare 和 compareto 的定義進行排序的有序容器。
1、hashset實現類
hashset 允許有空值
hashset 執行緒不安全
資料不可重複
2、treeset實現類treeset 執行緒不安全
該類實現了sortedset介面,通過comparator或者comparable維護了乙個排序順序(二叉樹)。
3、linkedhashset類linkedhashset 允許有空值
linkedhashset 執行緒不安全
通過資料的插入順序對其進行順序儲存。
1.以鍵值對的形式進行儲存。
2.鍵不可以重複,值可以重複。
3.鍵只能有乙個null鍵,值可以有多個null鍵。
map 介面最流行的幾個實現類是 hashmap、linkedhashmap、hashtable 和 treemap。(hashmap、treemap最常用)
1、hashmap:
hashmap 允許使用null值和null鍵
hashmap 執行緒不安全
hashmap 是無序的
底層使用陣列實現,陣列中每一項是個單向鍊錶,即陣列和鍊錶的結合體;
當鍊表長度大於一定閾值時,鍊錶轉換為紅黑樹,這樣減少鍊錶查詢時間。
hashmap在底層將key-value當成乙個整體進行處理,這個整體就是乙個node物件。
hashmap使用乙個node陣列來儲存所有的key-value對,當需要儲存乙個node物件時,
會根據key的hash演算法來決定其在陣列中的儲存位置,在根據equals方法決定其在該陣列位置
上的鍊錶中的儲存位置;當需要取出乙個node時,也會根據key的hash演算法找到其在陣列中
的儲存位置,再根據equals方法從該位置上的鍊錶中取出該node。
2、hashtable:hashtable 不允許使用null值和null鍵
hashtable 執行緒安全
底層使用陣列實現,陣列中每一項是個單鏈表,即陣列和鍊錶的結合體
hashtable在底層將key-value當成乙個整體進行處理,這個整體就是乙個entry物件。
hashtable使用乙個entry陣列來儲存所有的key-value對,當需要儲存乙個entry物件時,
會根據key的hash演算法來決定其在陣列中的儲存位置,在根據equals方法決定其在該陣列
位置上的鍊錶中的儲存位置;當需要取出乙個entry時,也會根據key的hash演算法找到其在
陣列中的儲存位置,再根據equals方法從該位置上的鍊錶中取出該entry。
synchronized是針對整張hash表的,即每次鎖住整張表讓執行緒獨佔
3、treemap:底層是二叉樹的結構
執行緒不同步
list ,set,map的特點與區別
list特點 元素有放入順序,元素可重複 map特點 元素按鍵值對儲存,無放入順序 set特點 元素無放入順序,元素不可重複 注意 元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的 list介面有三個實現類 linkedlist,arraylist,...
List,Set,Map用法以及區別
list特點 元素有放入順序,元素可重複 map特點 元素按鍵值對儲存,無放入順序 set特點 元素無放入順序,元素不可重複 注意 元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的 list介面有三個實現類 linkedlist,arraylist,...
List Set Map 三種集合的區別
list set map 的關係和區別 list和set是儲存單列資料的集合,map是儲存鍵值對的雙列資料的集合 2.list集合儲存資料是有序的,保可以新增重複的元素 map集合存儲資料是無序的,map集合的key是不能重複的,value可以重複 set集合儲存資料是無順序的但 jdk1.8版本之...