【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值,但是在輸出的時候會報空指針異常。
以上信息並非原創,僅作收藏學習用。