摘要: 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同步该容器
查询效率比较高,比较适用于查询
扩容的长度为初始长度的一半,建议初始化的时候设置已知的长度,免得容器自己去扩容,浪费空间以及效率
阅读全文