一、集合框架结构图
Collection集合的框架结构图:
Map集合的框架结构图:
二、集合类对比
List集合的实现类属性对比:
属性 | Collection | ||
List | |||
ArrayList | LinkedList | Vector | |
线程安全性 | 不安全 | 不安全 | 安全 |
底层实现 | 动态数组 | 双向链表 | 动态数组 |
元素顺序 | 有序 | ||
元素重复 | 可重复 | ||
查询速度 | 快 | 慢 | 快 |
增删速度 | 慢 | 快 | 慢 |
null元素 | 允许 | 允许 | 允许 |
扩容机制 | 扩容1.5倍 | / | 扩容2倍 |
应用场景 | 用于频繁进行数据查询,如需要频繁遍历集合的时候使用 | 大量增删操作,需要频繁增删集合中的数据的时候使用,如队列或栈等数据结构 | 不推荐使用,会造成性能上的损失 |
Set集合的实现类属性对比:
属性 | Collection | ||
Set | |||
HashSet | LinkedHashSet | TreeSet | |
线程安全性 | 不安全 | 不安全 | 不安全 |
底层实现 | HashMap | HashMap | 红黑树 |
元素顺序 | 无序 | 保持插入顺序 | 有序 |
元素重复 | 不可重复 | ||
查询速度 | 快 | 快 | 快 |
增删速度 | 快 | 快 | 快 |
null元素 | 只允许一个null | 只允许一个null | 不允许 |
扩容机制 | / | / | / |
应用场景 | 数据无序,不可重复,不用在乎存取顺序的情况,如判断元素是否存在 | 用于需要确定元素存储顺序的情况,如需要知道存取顺序的情况 | 用于需要确定元素的顺序但是不能重复的情况,如去重后排序 |
Map集合的实现类属性对比:
属性 | Map | ||||
HashMap | LinkedHashMap | TreeMap | HashTable | Properties | |
线程安全 | 否 | 否 | 否 | 是 | 否 |
底层实现 | 哈希表 | 哈希表、双向链表 | 红黑树 | 哈希表 | 哈希表 |
null键 | 只允许一个null | 只允许一个null | 否 | 否 | 否 |
null值 | 是 | 是 | 是 | 否 | 是 |
键重复性 | 否 | ||||
元素顺序 | 无序 | 插入/访问顺序 | 有序 | 无序 | 无序 |
查询速度 | 快 | 快 | 快 | 慢 | 慢 |
修改速度 | 快 | 相对于HashMap慢 | 快 | 慢 | 慢 |
应用场景 | 保存无序键值对 | 用于需要保持元素顺序的情况 | 用于需要按键排序的情况 | 不推荐使用 | 主要用于配置文件的定义和操作,如读取和写入属性文件.properties |