1.了解List,Set,Map
List:有序不唯一列表。
Set:有序唯一列表。
Map:键值对集合,键不可重复,值可以重复
2.数据结构与存储方式
List:是有序集合(元素存入顺序与取出顺序一致),允许重复元素,可以通过索引(下标) 访问元素(类似数组)。常见实现类:ArrayList(数组实现,查询快、增删慢)、LinkedList(链表实现,增删快、查询慢)、Vector(线程安全,效率低)。
Set:是无序集合(元素存入顺序与取出顺序不一定一致,LinkedHashSet 除外),不允许重复元素(通过 equals() 和 hashCode() 判断唯一性),无索引,不能通过下标访问。常见实现类:HashSet(哈希表实现,无序)、LinkedHashSet(哈希表 + 链表,有序)、TreeSet(红黑树实现,元素可排序)。
Map:是键值对(Key-Value)映射集合,存储的是 “键” 和 “值” 的关联关系,键(Key)不允许重复(类似 Set 的特性),值(Value)可以重复。键和值是一一对应关系,通过键可以快速查找值,无索引。常见实现类:HashMap(哈希表实现,无序)、LinkedHashMap(哈希表 + 链表,有序)、TreeMap(红黑树实现,键可排序)、Hashtable(线程安全,效率低)。
3.常用集合及区别
| List | set | Map |
|
ArrayList 基于动态数组实现,支持随 机访问。 |
TreSet 基于红黑树实现,支持有序 操作 |
TreeMap 基于红黑树实现 |
|
Vector 和ArrayList类似,但它是线 程安全的 |
HashSet 基于哈希表实现,支持快速查 找,但不支持有序性操作 |
HashMap 基于哈希表实现 |
|
HashTable 和HashMap类似,但它是线 程安全的 | ||
|
LinkedList 基于双向列表实现,只能顺 序访问 |
LinkedHashSet 具有HashSet的查找效率, 且内部使用双向链表维护元 素的插入顺序 |
LinkedHashMap 使用双向链表来维护元素的 顺序,顺序为插入顺序或最 近最少是用(LRU)顺序 |
4. 核心特性对比
| 特性 | List | Set | Map |
|---|---|---|---|
| 元素形式 | 单个对象 | 单个对象 | 键值对(Key-Value) |
| 有序性 | 有序(存入顺序一致) | 无序(LinkedHashSet 除外) | 无序(LinkedHashMap 除外) |
| 重复性 | 允许重复元素 | 不允许重复元素 | 键不重复,值可重复 |
| 索引访问 | 支持(通过下标) | 不支持 | 不支持(通过键访问值) |
| 核心方法 | add()、get(index)、remove(index) 等 | add()、contains()、remove() 等 | put(key, v |
5. 使用场景
List:适合需要按顺序存储、允许重复、频繁查询的场景,例如:存储用户列表、订单记录等。
Set:适合需要去重、无需顺序的场景,例如:存储唯一标识(ID、用户名)、过滤重复数据等。
Map:适合需要通过键快速查找值的场景,例如:存储配置信息(键为配置项名,值为配置值)、缓存数据等。
6. 总结
简单说,List 管 “顺序和重复”,Set 管 “去重”,Map 管 “键值对应”—— 根据数据的特性选对容器,代码会更高效、更贴合需求。

7960

被折叠的 条评论
为什么被折叠?



