精心整理了最新的面试资料和简历模板,有需要的可以自行获取
点击前往百度网盘获取
点击前往夸克网盘获取
一、集合框架概述
Java集合框架(Java Collections Framework, JCF)是Java中用于存储、操作和管理数据集合的核心工具库。它提供了一套标准化的接口和类,使得开发者能够高效处理数据,同时保证代码的可读性和可维护性。集合框架的核心设计思想是接口与实现分离,通过定义统一的接口规范,允许不同的数据结构实现相同的行为。
二、核心接口层次结构
Java集合框架的核心接口分为两大分支:
- 单列集合(Collection体系):用于存储单一元素的集合。
- 双列集合(Map体系):用于存储键值对(Key-Value)的映射关系。
以下是核心接口的继承关系图:
Iterable (根接口)
└── Collection
├── List
├── Set
│ └── SortedSet → NavigableSet (Java 6+)
└── Queue
└── Deque
Map (独立接口)
└── SortedMap → NavigableMap (Java 6+)
三、核心接口详解
1. Iterable
- 作用:所有集合类的顶级接口,提供遍历集合元素的能力。
- 核心方法:
Iterator<T> iterator(); // 返回迭代器对象
- 说明:实现此接口的类支持增强型
for
循环(for-each)。
2. Collection
- 作用:所有单列集合的根接口,定义了通用的集合操作方法。
- 核心方法:
boolean add(E e); // 添加元素 boolean remove(Object o); // 删除元素 int size(); // 获取元素数量 boolean contains(Object o); // 判断是否包含元素 void clear(); // 清空集合
- 子接口:
List
,Set
,Queue
3. List
- 特点:有序、可重复、支持索引访问。
- 核心扩展方法:
E get(int index); // 按索引获取元素 E set(int index, E e); // 修改指定位置元素 void add(int index, E e); // 在指定位置插入元素
- 常见实现类:
ArrayList
,LinkedList
,Vector
4. Set
- 特点:无序、不可重复(依赖
equals()
和hashCode()
)。 - 核心扩展:无新增方法,继承自
Collection
。 - 子接口:
- SortedSet:元素按自然顺序或自定义比较器排序。
- NavigableSet(Java 6+):扩展了导航方法(如
ceiling()
,floor()
)。
- 常见实现类:
HashSet
,LinkedHashSet
,TreeSet
5. Queue
- 特点:队列结构,支持FIFO(先进先出)或优先级操作。
- 核心方法:
boolean offer(E e); // 添加元素(推荐替代add) E poll(); // 移除并返回队列头元素 E peek(); // 查看队列头元素但不移除
- 子接口:
- Deque(双端队列):支持两端插入和删除。
void addFirst(E e); // 头部插入 void addLast(E e); // 尾部插入 E removeFirst(); // 头部移除
- Deque(双端队列):支持两端插入和删除。
- 常见实现类:
LinkedList
,PriorityQueue
,ArrayDeque
6. Map
- 特点:键值对存储,键唯一,值可重复。
- 核心方法:
V put(K key, V value); // 添加键值对 V get(Object key); // 根据键获取值 Set<K> keySet(); // 返回所有键的集合 Collection<V> values(); // 返回所有值的集合
- 子接口:
- SortedMap:按键自然排序。
- NavigableMap(Java 6+):支持导航方法(如
lowerKey()
)。
- 常见实现类:
HashMap
,LinkedHashMap
,TreeMap
,Hashtable
四、接口关系与对比
接口 | 特点 | 典型实现类 | 使用场景 |
---|---|---|---|
List | 有序、可重复、索引访问 | ArrayList | 频繁查询、顺序访问 |
Set | 无序、唯一 | HashSet | 去重、快速存在性检查 |
Queue | 队列/优先级管理 | PriorityQueue | 任务调度、缓冲处理 |
Deque | 双端操作 | ArrayDeque | 栈、滑动窗口算法 |
Map | 键值对映射 | HashMap | 缓存、键值关联数据存储 |
五、设计思想总结
- 高内聚低耦合:接口定义行为,实现类负责具体逻辑(如
ArrayList
与LinkedList
)。 - 泛型支持:类型安全,避免强制类型转换。
- 迭代器模式:通过
Iterator
统一遍历方式,隐藏底层实现。 - 扩展性:通过
Comparator
、Navigable
等接口支持灵活扩展。
六、常见问题
-
List与Set如何选择?
- 需要维护插入顺序或允许重复 →
List
- 需要去重或快速查找 →
Set
- 需要维护插入顺序或允许重复 →
-
HashMap与TreeMap的区别?
HashMap
:基于哈希表,O(1)时间查询,无序。TreeMap
:基于红黑树,按键排序,O(log n)时间操作。
-
为什么推荐使用Deque实现栈?
传统Stack
类继承自Vector
,存在同步开销,而ArrayDeque
性能更优且无锁。
通过掌握核心接口的设计与关系,开发者能够更高效地选择适合业务场景的数据结构,提升代码质量和性能。