java中集合類HashSet、ArrayList、LinkedList總結


【HashSet】

1. HashSet存儲不能夠存儲相同的元素,元素是否相同的判斷:重寫元素的equals方法。equals方法和hashCode方法必須兼容,如:equals方法判斷的是用戶的名字name,那么hashCode的返回的hashcode必須是name。hashcode();

2. HashSet存儲是無序的,保存的順序與添加的順序是不一致的,它不是線性結構,而是散列結構,(通過散列表:散列單元指向鏈表)。因此,HashSet的查詢效率相對比較高。

3. HashSet不是線程安全的,不是線程同步的。這需要自己實現線程同步:Collections.synchronizedCollection(),方法實現。

 

【ArrayList】

1. 不是線程安全的,不是線程同步的。

2.ArrayList是通過可變大小的數組實現的,允許null在內的所有元素。

3.ArrayList中存放順序和添加順序是一致的。並且可重復元素。

4.ArrayList適合通過位子來讀取元素。

 

【LinkedList】

1.不是線程安全的,不是線程同步的。

2.LinkedList是通過雙向循環鏈表來實現的。

3.存放順序和添加順序是一致的。可添加重復元素。

4.適合鏈表頭尾操作和插入指定位置元素的操作。

ArrayList和LinkedList之間的數據傳遞可通過toArray()方法。

 

【HashMap】

1.非線程安全,不是線程同步。

2.添加順序和保存的順序是不一致的。

3.必須重寫key的equals方法和hashCode方法。

4.HashMap的實際容量=容量*因子,默認為16*0.75=12.所以考慮到HashMap的添加的效率問題,根據實際情況來設計它的開始的默認的容量。

的操作方法根據api來查找。

5.添加的值中是允許有null的值存在的。

 

【Hashtable】

1.是線程安全的,是線程同步的,在實現線程同步的時候是不需要手動來實現線程同步的。因此相對效率低。

2.添加的順序和保存的順序是不一致的。

3.添加的值中是不允許有null值存在的。

 

【TreeMap】

1.非線程安全,不是線程同步的。在必要的情況下必手動實現線程同步。

2.在元素的添加,刪除和定位映射中效率相對hashMap較低。但是在排序方面TreeMap比較實用。

3.添加的值中允許有null值,但是在輸出的時候會報空指針異常。

 

以上信息並非原創,僅作收藏學習用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM