单列集合思维导图

以下是根据思维导图做的简洁点的介绍
🧠 一、集合的作用与分类
| 类别 | 描述 |
|---|---|
| 作用 | 方便存储和管理数据,满足不同业务需求 |
| 分类 | 单列集合(Collection)与双列集合(Map) |
📦 二、单列集合(Collection)
1. 接口层级
Collection(根接口)
├── List(有序、可重复、有索引)
│ ├── ArrayList
│ └── LinkedList
└── Set(无序、不重复、无索引)
├── HashSet(无序)
├── LinkedHashSet(有序)
└── TreeSet(可排序)
2. List 系列集合
✅ 共同特点:
-
有序(按添加顺序)
-
元素可重复
-
有索引(支持按索引操作)
| 实现类 | 底层结构 | 特点 | 使用场景 |
|---|---|---|---|
| ArrayList | 数组 | 查询快,增删慢 | 查询频繁、增删少 |
| LinkedList | 双向链表 | 增删快,查询慢,支持首尾高效操作 | 首尾操作多,如队列、栈 |
🔧 List 特有方法(索引相关):
| 方法 | 描述 |
|---|---|
add(int index, E element) | 在指定位置插入元素 |
E remove(int index) | 删除指定索引元素,返回被删元素 |
E get(int index) | 获取指定索引元素 |
🔧 LinkedList 特有方法(首尾操作):
| 方法 | 描述 |
|---|---|
addFirst(E e) / addLast(E e) | 在开头/末尾添加元素 |
getFirst() / getLast() | 获取开头/末尾元素 |
removeFirst() / removeLast() | 删除并返回开头/末尾元素 |
3. Set 系列集合
✅ 共同特点:
-
无序(LinkedHashSet 除外)
-
元素不可重复
-
无索引
| 实现类 | 底层结构 | 特点 | 使用场景 |
|---|---|---|---|
| HashSet | 哈希表(数组+链表+红黑树) | 无序、去重 | 不关心顺序,只去重 |
| LinkedHashSet | 哈希表 + 双向链表 | 有序(插入顺序)、去重 | 保留插入顺序 |
| TreeSet | 红黑树 | 可排序(默认升序)、去重 | 需要排序 |
🔧 TreeSet 排序方式:
| 方式 | 描述 |
|---|---|
| 自然排序 | 类实现 Comparable 接口,重写 compareTo |
| 定制排序 | 构造时传入 Comparator 比较器 |
🔁 三、集合遍历方式
| 遍历方式 | 描述 |
|---|---|
| 普通 for 循环 | 适用于 List(有索引) |
| 增强 for(for-each) | 本质是 Iterator 的简化写法 |
forEach(Consumer) + Lambda | 简洁写法,如:list.forEach(System.out::println) |
⚠️ 注意:Lambda 表达式中不能使用
continue、break、return控制循环
🛠️ 四、Collection 常用方法(所有子类都有)
| 方法 | 描述 |
|---|---|
add(E e) | 添加元素 |
clear() | 清空集合 |
contains(Object o) | 判断是否包含某元素 |
isEmpty() | 判断是否为空 |
size() | 返回元素个数 |
toArray() | 把集合转成数组 |
🧰 五、Collections 工具类(操作 List)
| 方法 | 描述 |
|---|---|
addAll(Collection<? super T> c, T... elements) | 批量添加元素 |
shuffle(List<?> list) | 打乱 List 元素顺序 |
sort(List<T> list) / sort(List<T> list, Comparator<? super T> c) | 对 List 升序排序(可自定义比较器) |
⚠️ 注意:
Collections.sort()只能对List排序,不能排序Set
✅ 六、集合选择建议(使用场景)
| 需求 | 推荐集合 |
|---|---|
| 查询多、增删少 | ArrayList |
| 增删多、查询少,或频繁首尾操作 | LinkedList |
| 去重、不关心顺序 | HashSet |
| 去重、保留插入顺序 | LinkedHashSet |
| 去重、需要排序 | TreeSet |
七、集合和数组的区别
| 维度 | 数组 | 集合 |
|---|---|---|
| 长度 | 固定 | 可变 |
| 元素 | 基本/对象 | 仅对象(基本需包装) |
| 扩容 | 手工 | 自动 |
| API | 极少 | 丰富 |
| 速度 | 最快 | 稍慢 |
| 泛型 | ❌ | ✅ |
| 类型检查 | 运行时 | 编译时 |
拓展介绍底层原理:
1.ArrayList实现底层代码

2.LinkedList实现底层代码

695

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



