前言:
collection类下面有多个实现子类,每个实现子类都不一样,通过梳理每个实现子类,快速掌握便于日常工作。
关系图:
Collection
└── List
└── Set
└── Map
└── Queue
└── ArrayList
└── LinkedList
└── HashSet
└── TreeSet
└── HashMap
└── LinkedHashMap
└── Queue
└── ArrayDeque
Collection:
- 特点:
- 定义了集合的基本接口(如
add()
、remove()
、size()
等)。 - 不保证元素是否唯一或有序。
- 定义了集合的基本接口(如
- 使用场景:
- 作为其他集合子类的基础接口(如
List
、Set
、Map
、Queue
等)。 - 用于动态存储元素(如订单列表、用户列表)。
- 作为其他集合子类的基础接口(如
List
子类:
- 特点:
- 表示一个有序且允许重复的集合。
- 定义了
isEmpty()
、size()
、get(int index)
等方法。
- 具体实现:
ArrayList
:基于动态数组实现,支持快速增删改查。LinkedList
:基于链表实现,内部节点存储元素,支持快速查询但增删较慢。
- 使用场景:
- 存储用户输入的多个选项(如多个选择框)。
- 实现其他集合接口(如
Set
、Map
等)。
Set
子类:
- 特点:
- 表示一个无序且去重的集合。
- 每个元素只能出现一次。
- 具体实现:
HashSet
:基于哈希表实现,支持快速查询。TreeSet
:基于红黑树实现,保持有序。
- 使用场景:
- 去重操作(如存储用户 ID)。
- 检查元素是否存在(
contains()
方法)。
Map
子类:
- 特点:
- 表示键值对的无序集合。
- 每个键只能对应一个值。
- 具体实现:
HashMap
:基于哈希表实现,支持快速查找。LinkedHashMap
:基于链表和哈希表结合实现,保持键的插入顺序。TreeMap
:基于红黑树实现,保持键的有序性。
- 使用场景:
- 存储键值对(如用户 ID 映射用户名)。
- 快速查找键对应的值(
getValue()
方法)。
Queue
子类:
- 特点:
- 表示一个无序且允许重复的集合。
- 常用于队列操作(如任务排队)。
- 具体实现:
ArrayDeque
:基于数组实现,提供高效的双端队列操作。
- 使用场景:
- 实现队列操作(如任务排队、消息队列)。
- 高效的双端队列操作。
总结:
Collection
是集合的基本接口。List
表示有序且允许重复的集合。Set
表示无序且去重的集合。- `Map 表示键值对的无序集合。
Queue
表示允许重复的无序集合,常用于队列操作。
在实际工作中,可以根据具体需求选择合适的集合接口:
- 使用
List
存储用户输入的多个选项。 - 使用
Set
去重(如存储用户 ID)。 - 使用
Map
存储键值对(如用户 ID 映射用户名)。 - 使用
Queue
实现任务排队或消息队列。