摘要: HashSet概要:
采用HashMap存儲,key直接存取值,value存儲一個object
存儲的key值是唯一的
HashSet中元素的順序是隨機的,包括添加(add())和輸出都是無序的
代碼就不具體詳解了,主要就是通過封裝HashMap組成
閱讀全文
摘要: 1.Hashtable概要:實現Map接口的同步實現
線程安全
不能存儲null到key和value
HashTable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數
閱讀全文
摘要: 1. Vector概要:
默認長度為10
/**
* Constructs an empty vector so that its internal data array
* has size {@code 10} and its standard capacity increment is
* zero.
*/
public Vector() {
this(10);
}
底層采用數組存儲:protected Object[] elementData;
線程安全
查詢效率比較高,比較適用于查詢
擴容的長度為初始長度的一半,建議初始化的時候設置已知的長度,免得容器自己去擴容,浪費空間以及效率
與ArrayList基本一樣,除了所有操作資源的方法都加了synchronized,保證線程同步
這里的源代碼就不詳解了,具體請參考容器-數組-ArrayList詳解。
閱讀全文
摘要: 1. ArrayList概要:
默認長度為10
public ArrayList() {
this(10);
}
底層采用數組存儲:private transient Object[] elementData;
transient表示數組elementData不需要通過serialization序列化傳輸
線程不安全,在多線程場景會出現問題,可以考慮使用Vector或者Collections.synchronizedList同步該容器
查詢效率比較高,比較適用于查詢
擴容的長度為初始長度的一半,建議初始化的時候設置已知的長度,免得容器自己去擴容,浪費空間以及效率
閱讀全文