JAVA集合体系框架
实现类 | 存储结构 | 顺序 | 是否可重复 | 增删改查 | 初始化容量 | 扩容方式 | 线程是否安全 |
ArrayList | 动态数组 | 有序 | 可重复 | 索引查询效率高,增删效率低(有索引) | 10 | 原容量的1.5倍 | 非同步,不安全 |
Vector | 数组 | 有序 | 可重复 | 比ArrayList性能低 | 10 | 默认为原容量的2倍 | 安全 |
LinkedList | 双向链表 | 有序 | 可重复 | 查询效率低,增删效率高(有索引) | 0 | 无 | 不安全 |
HashSet | 哈希表 | 无序 | 不重复 | 查询效率最高,增删效率最高 | 16 | 默认扩容因子0.75,扩容为原容量的两倍 | 不安全 |
LinkedHashSet | 哈希表+双链表 | 有序 | 不重复 | 查询效率最高,增删效率最高 | 16 | 当数组长度>64,链表长度>8时链表转换成红黑树 | 不安全 |
TreeeSet | 红黑树 | 自然排序 | 不重复 | 效率中等 | 不安全 | ||
HashMap | 哈希表 | 无序 | Key唯一 | 查询效率最高,增删效率最高 | 16 | 默认扩容因子0.75,扩容为原容量的两倍 | 不安全 |
LinkedHashMap | 哈希表+双链表 | 有序 | Key唯一 | 查询效率最高,增删效率最高 | 16 | 当数组长度>64,链表长度>8时链表转换成红黑树 | 不安全 |
TreeMap | 红黑树 | 自然排序 | Key唯一 | 效率中等 | 不安全 | ||
HashTable | 数组+链表 | 无序 | 不重复 | 比HashMap性能低 | 11 | 采用二倍加1的扩容方法。新的threshold还是0.75 * count | 安全(全局锁) |
ConcurrentHashMap | 数组(segment)+数组(HashEntry)+链表(HashEntry节点) | 无序 | 不重复 | 比HashMap性能高 | 16 | 新容量=旧容量*2,新阈值=新容量*负载因子 | 安全(分段锁) |