Java集合框架是Java标准库中用于存储和操作一组对象的核心组件,整体采用接口加实现的层级设计,既保证了操作的规范性,又提供了丰富的实现类适配不同场景。理解它的核心概念,能让我们在开发中更高效地处理数据集合。

核心顶层接口划分
Java集合框架的顶层接口主要分为两大类,分别是存储单列数据的Collection接口和存储键值对的Map接口,二者没有继承关系,各自有独立的实现体系。
Collection接口体系
Collection是所有单列集合的父接口,定义了添加、删除、遍历元素等通用方法,它的两个核心子接口是List和Set:
List接口:存储有序、可重复的元素,常用实现类有ArrayList、LinkedList、Vector,适合需要按索引访问或者允许重复元素的场景。Set接口:存储无序、不可重复的元素,常用实现类有HashSet、LinkedHashSet、TreeSet,适合需要去重或者保证元素唯一性的场景。
Map接口体系
Map接口用于存储键值对映射关系,键不可重复,每个键最多对应一个值,常用实现类有HashMap、LinkedHashMap、TreeMap、Hashtable:
- HashMap:基于哈希表实现,查询和插入效率高,线程不安全,适合大多数非并发场景。
- TreeMap:基于红黑树实现,可以对键进行自然排序或者自定义排序,适合需要有序键值对的场景。
- Hashtable:线程安全但效率较低,现在更推荐使用ConcurrentHashMap替代。
迭代器的核心作用
迭代器是集合框架中统一的遍历工具,所有实现了Iterable接口的集合都可以获取迭代器,它的核心优势是屏蔽了不同集合的内部结构,提供一致的遍历方式,同时支持遍历过程中安全删除元素。
下面是通过迭代器遍历List的示例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Go");
// 获取迭代器
Iterator<String> iterator = list.iterator();
// 遍历元素
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
// 遍历过程中删除元素,避免使用list.remove()导致并发修改异常
if ("Python".equals(element)) {
iterator.remove();
}
}
System.out.println("删除后集合:" + list);
}
}泛型在集合中的应用
泛型是Java 5引入的特性,在集合中使用泛型可以指定集合中存储的元素类型,在编译阶段就能检查类型是否匹配,避免运行时出现类型转换错误,同时也省去了遍历时的强制类型转换操作。
下面是不使用泛型和使用泛型的对比示例:
import java.util.ArrayList;
import java.util.List;
public class GenericDemo {
public static void main(String[] args) {
// 不使用泛型,可以添加任意类型元素,取出时需要强制转换,容易出错
List rawList = new ArrayList();
rawList.add("Hello");
rawList.add(123); // 编译不报错,运行时转换字符串会报错
String str = (String) rawList.get(0); // 正确
// String str2 = (String) rawList.get(1); // 运行时抛出ClassCastException
// 使用泛型,指定集合只能存储String类型
List<String> genericList = new ArrayList<>();
genericList.add("World");
// genericList.add(456); // 编译阶段直接报错,避免类型错误
String genericStr = genericList.get(0); // 无需强制转换
System.out.println(genericStr);
}
}常用集合实现类的选择参考
实际开发中可以根据需求参考下表选择对应的集合实现类:
| 需求场景 | 推荐集合类型 |
|---|---|
| 需要频繁按索引查询,增删操作少 | ArrayList |
| 需要频繁在首尾增删元素 | LinkedList |
| 需要存储不重复元素,不关心顺序 | HashSet |
| 需要存储不重复元素,且保持插入顺序 | LinkedHashSet |
| 需要键值对存储,查询效率高 | HashMap |
| 需要键值对按key排序 | TreeMap |
| 并发场景下的键值对存储 | ConcurrentHashMap |
理解这些核心概念后,我们在开发时就能根据具体的功能需求和性能要求,选择最合适的集合类型,避免不合理的选型导致的性能损耗或者功能问题。
Java集合框架Collection接口Map接口迭代器泛型修改时间:2026-06-03 15:52:49