Java集合笔记

参考:https://blog.csdn.net/column/details/collection.html

仅作参考,待后续添加

ArrayList:

1: 基于数组的集合,查询快,使用时最好知道数据的数量。线程不安全。

2: JAVA 1.7 中默认初始化空的数组,第一次新加元素是会初始化10个元素空间的数组。当数组容量不够时,会创建一个1.5倍容量的新数组,并将原来的元素copy进新数组。

3: 数据复制, Arrays.copyOf() 和System.arraycopy 方法, 最后调用的都是 System.arraycopy, 此方法是本地方法, 在 openJDK中可以看源码

4: 序列化-->  transient Object[] elementData 不可被序列化, 需要ObjectOutputStream/ObjectInputStream 利用反射调用ArrayList私有的序列化方法readObject/writeObejct,

5: fail-fast 理论, modCount == expectedModCount 报错原因: 在更改数组结构的同时没有将modCount 赋值给expectedModCount。这是迭代器可以remove的根本原因,删除后将modCount赋给了 expectedModCount,所以判断是相等的。

  解决: 1. 使用Collections.synchronizedList   不推荐,增删有同步锁

      2. 可以使用CopyOnWriteArrayList, 读写分离

LinkedList:

Vector:

HashMap:

HashSet:

HashTable:

并发库集合容器:

ConcurrentHashMap:

CopyOnWriteArrayList:

原文地址:https://www.cnblogs.com/liangzg/p/9512115.html