MCP3551高精度ADC与PIC18F87J10的工业应用解析
2026/7/9 14:14:44
Java 集合框架(JCF)是 Java SE 中最核心的部分之一,位于java.util包下。它提供了一套统一的接口、抽象类和实现类,用于存储、管理和操作对象的集合(如列表、集合、映射等)。集合框架的核心目标是:高效、类型安全、易扩展。
本文将从基础到高级,系统详解集合框架,包括架构、核心接口/类、常用方法、线程安全、性能分析、源码要点、常见问题及最佳实践。基于 Java 17+(2026 主流版本)的视角,结合实际开发经验。
集合框架分为两大体系:
抽象类(如 AbstractList、AbstractSet)提供骨架实现,方便自定义扩展。
核心类图简述(文字版):
Collection (接口) ├── List (接口) │ ├── ArrayList │ ├── LinkedList │ └── Vector (遗留) ├── Set (接口) │ ├── HashSet │ ├── LinkedHashSet │ └── TreeSet (SortedSet/NavigableSet) ├── Queue (接口) │ ├── PriorityQueue │ └── ArrayDeque (Deque 接口实现) └── Map (接口) ├── HashMap ├── LinkedHashMap ├── TreeMap (SortedMap/NavigableMap) └── Hashtable (遗留)Java 9+ 新增:不可变集合,如 List.of()、Set.of()、Map.of(),用于快速创建只读集合。
| 方法类别 | 示例方法 | 描述 |
|---|---|---|
| 添加 | add(E e), addAll(Collection c) | 添加元素/集合 |
| 删除 | remove(Object o), clear() | 删除元素/清空 |
| 查询 | contains(Object o), size(), isEmpty() | 检查包含/大小/空 |
| 遍历 | iterator(), forEach(Consumer) | 迭代器/函数式遍历(Java 8+) |
| 转换 | toArray() | 转数组 |
| 方法类别 | 示例方法 | 描述 |
|---|---|---|
| 添加/修改 | put(K key, V value), putAll(Map m) | 插入/覆盖键值对 |
| 删除 | remove(Object key), clear() | 删除键/清空 |
| 查询 | get(Object key), containsKey(K key) | 获取值/检查键 |
| 遍历 | keySet(), values(), entrySet() | 获取键集/值集/键值对集 |
| Java 8+ 新增 | computeIfAbsent, merge | 函数式操作(如默认值) |
示例代码(ArrayList + HashMap):
importjava.util.*;publicclassCollectionDemo{publicstaticvoidmain(String[]args){// List 示例List<String>list=newArrayList<>();list.add("apple");list.add("banana");list.add(1,"orange");// 插入到索引1System.out.println(list.get(0));// apple// Map 示例Map<Integer,String>map=newHashMap<>();map.put(1,"one");map.put(2,"two");System.out.println(map.get(1));// one// 遍历map.forEach((k,v)->System.out.println(k+": "+v));}}标准集合(如 ArrayList、HashMap)非线程安全,多线程下可能 ConcurrentModificationException。
示例:
Map<String,String>safeMap=newConcurrentHashMap<>();safeMap.putIfAbsent("key","value");// 原子操作| 集合类型 | 添加 | 删除 | 查询 | 遍历 | 空间开销 | 适用场景 |
|---|---|---|---|---|---|---|
| ArrayList | O(1) 摊销 | O(n) | O(1) | O(n) | 中等 | 随机访问、尾部操作 |
| LinkedList | O(1) | O(1) | O(n) | O(n) | 高(节点) | 频繁插入/删除 |
| HashSet/Map | O(1) | O(1) | O(1) | O(n) | 中等 | 快速查找、去重 |
| TreeSet/Map | O(log n) | O(log n) | O(log n) | O(n) | 中等 | 排序、范围查询 |
| PriorityQueue | O(log n) | O(log n) | O(1) peek | O(n) | 中等 | 优先级调度 |
new ArrayList<>(100)。List<T> list = new ArrayList<>();(泛型 + 菱形运算符)。list.stream().filter(x -> x > 0).collect(Collectors.toList());。集合框架是 Java 开发的基石,熟练掌握能显著提升代码效率和质量。如果想深入某个类源码(如 HashMap 的 resize)、具体示例代码,或与 Kotlin/Scala 集合对比,继续问我~