Java集合框架是替代数组的标准化体系,解决长度固定、操作繁琐等问题,提供自动扩容、统一遍历与排序机制;分Collection(List/Set/Queue)和Map两大主干,接口定义行为,实现类决定效率,随JDK演进持续增强泛型、函数式与不可变支持。
Java集合框架是一套标准化的接口、实现类和算法,用于统一地存储、操作和管理对象组。它不是某个具体类,而是一个设计严谨、层次清晰的体系,核心目标是替代数组的局限性——比如长度固定、缺乏内置操作方法、不支持动态扩容等。
数组只能存固定数量的数据,增删元素需手动复制;而集合自动扩容、自带增删查改方法,还能处理映射关系(如Map)。集合还统一了遍历方式(Iterator)、排序机制(Comparable/Comparator)和并发支持(如ConcurrentHashMap),让代码更简洁、可维护性更高。
整个框架分为两个独立但互补的体系:
Collection,下分三个重要子接口:ArrayList、LinkedList)equals() + hashCode() 判断,如 HashSet、TreeSet)PriorityQueue、ArrayDeque)K-V),键唯一、值可重复。它不继承 Collection,而是自成体系,常见实现有 HashMap、TreeMap、LinkedHashMap 等。接口定义“能做什么”,实现类决定“怎么做到”。例如:
List 接口规定必须支持按索引访问、插入、删除——ArrayList 用数组实现(查快删慢),LinkedList 用双向链表实现(删插快,查慢)Set 接口要求元素不重复——HashSet 借助 HashMap 的 key 机制实现(O(1)查找),TreeSet 用红黑树保证自然排序(O(log n))Map 接口强调键值映射——HashMap 通过哈希桶+链表/红黑树处理冲突,ConcurrentHashMap 则在多线程场景下提供安全高效的读写能力
集合框架不是一成不变的:
ArrayList、HashMap 等)ClassCastException
Stream API 和默认方法(如 removeIf、forEach),支持函数式操作List.of()、Set.copyOf()),简化只读场景