Collections Framework 是 Java 的统一接口和类的集合,用于存储和操作对象组 — List、Set、Map、Queue 及其实现。它提供现成的、经过充分测试的数据结构,因此你很少需要自己构建。
核心接口
text
Collection
├── List — ordered, allows duplicates, indexed access
├── Set — no duplicates, models uniqueness
└── Queue — FIFO/priority ordering for processing
Map (separate hierarchy) — key→value pairs
List<String> list = new ArrayList<>(); // backed by an array — fast random access
list.add("a");
list.get(0); // index access — O(1)
list.contains("a"); // O(n) search
// LinkedList — fast insert/remove at ends, O(n) random access
ArrayList(基于数组、索引快速)是默认选择;LinkedList 适合频繁的末尾插入。
Set<String> set = new HashSet<>(); // O(1) add/contains, NO order
set.add("a");
set.add("a"); // ignored — duplicates not allowed
set.contains("a"); // O(1) — great for membership tests
// TreeSet — sorted order; LinkedHashSet — insertion order
HashSet 提供 O(1) 唯一性检查;TreeSet 保持元素排序。
Map<String, Integer> map = new HashMap<>(); // O(1) get/put, no order
map.put("age", 30);
map.get("age"); // 30
map.getOrDefault("x", 0); // safe access with default
map.computeIfAbsent("list", k -> new ArrayList<>()); // handy for grouping
// TreeMap — sorted by key; LinkedHashMap — insertion order
HashMap 是 O(1) 键查找的主要选择。
Need ordered + indexed + duplicates → ArrayList
Need uniqueness, fast lookup → HashSet
Need key→value, fast lookup → HashMap
Need sorted order → TreeSet / TreeMap
Need FIFO processing → ArrayDeque / LinkedList (Queue)
Need thread-safety → ConcurrentHashMap, etc.
ArrayList: get O(1), add-end O(1), contains/remove O(n)
HashMap/HashSet: get/put/contains O(1) average
TreeMap/TreeSet: O(log n) (sorted)
LinkedList: add/remove-ends O(1), get O(n)
Collections Framework 是 Java 最常用的部分之一 — 几乎每个程序都用它来存储和处理数据组。
选择正确的集合是一项关键技能,直接影响正确性和性能:使用 ArrayList 处理有序索引数据,HashSet 处理唯一性,HashMap 处理快速键查找,以及在需要时使用排序/并发变体。
And understanding the interfaces (List/Set/Map/Queue)、它们的实现,特别是性能特征(O(1) HashMap 查找 vs O(n) 列表搜索)让你能选择适当的数据结构,而不是默认使用错误的结构(这是代码性能低下的常见原因)。
这是日常 Java 开发的基础性、实用性知识。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠