存储对象的容器,并提供操作对象的方法。
知识点:
- 数据结构:线性表、树、散列表
- Java 知识:泛型
- 设计模式:迭代器
1、集合
集合:存储对象的容器,并提供操作对象的方法。
分为
Collection
和Map
两大体系。
- Collection:存储单值。
- Map:存储 K-V 键值对(也称记录)。
Hint:集合只能存放引用类型。
若使用基本类型,编译器会自动装箱(影响性能)。
2、Collection 体系
2.1、常用实现类
Collection 分为
List
和Set
体系。
- List:有序,有下标,可重复。
Vector 类 | ArrayList 类 | LinkedList 类 | |
Java 版本 | 1.0 | 1.2 | 1.2 |
存储结构 | 数组 | 数组 | 双向链表 |
线程安全 | ✔ | ❌ | ❌ |
- Set:无序,无下标,不可重复。
HashSet 类 | TreeSet 接口 (SortedSet 实现类) | LinkedHashSet 类 (HashSet 子类) | |
Java 版本 | 1.2 | 1.2 | 1.4 |
存储结构 | HashMap | 红黑树 | 链表 |
线程安全 | ❌ | ❌ | ❌ |
元素去重原理 | 基于 hashCode | 基于排列顺序 | 基于 hashCode |
说明 | 判断相等:先 hashCode(),再 equals() | 对集合元素自动排序(需实现 Comparable 接口) | 保留元素的插入顺序(默认升序) |
2.2、Collections 工具类
类比数组工具类
Arrays
,集合工具类也位于
java.util
包下。
常用方法:
含义 | 说明 | |
binarySearch() | 二分查找 | - |
reverse() | 反转 | - |
shuffle() | 打乱 | - |
swap() | 交换位置 | 默认升序 |
sort() | 排序 | - |
synchronizedXxx() | 同步化 | 将线程不安全的集合包装为线程安全 (如 |
3、Map 体系
常用实现类
无序,无下标,Key 唯一
Hashtable | HashMap | TreeMap | |
Java 版本 | 1.0 | 1.2 | 1.2 |
存储结构 | 数组+链表 | 数组+链表、红黑树 | 红黑树 |
线程安全 | ✔ | ❌ | ❌ |
说明 | K/V 非空 | K 和 V 可空 | 对集合元素自动排序(需实现 Comparable 接口) |