集合框架总览

笔记/Java/Java基础/Java集合/集合框架总览

下一篇:List 与 ArrayList · 面试:集合面试 52 道

背景与动机#

数组长度固定;业务里更需要动态增删、去重、排序和键值映射——这些交给集合框架java.util)。

先记一句总纲:

  • Collection 体系:单个元素(List / Set / Queue
  • Map 体系:键值对(与 Collection 并列,不是子接口)

专题导航#

顺序笔记内容
1本篇框架结构、工具类、选型
2ListArrayList、LinkedList、扩容
3SetHashSet、LinkedHashSet、TreeSet
4QueueArrayDeque、PriorityQueue
5HashMap结构、put、扩容
6ConcurrentHashMap并发 Map
7迭代与陷阱Iterator、排序、常见坑

核心原理#

Collection 框架结构#

java.util
├─ Iterable → Collection
│ ├─ List → ArrayList, LinkedList, Vector
│ ├─ Set → HashSet, LinkedHashSet, TreeSet
│ └─ Queue/Deque → ArrayDeque, PriorityQueue, LinkedList
├─ Map → HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap
└─ Collections → sort, synchronizedList, unmodifiableXxx(工具类)

学习时先分清:接口层次 vs Collections 工具类

Collection 和 Collections 的区别#

CollectionCollections
角色接口List/Set/Queue 的根工具类,静态方法操作集合
例子Collection<String> c = new ArrayList<>()Collections.sort(list)

常见集合怎么选#

需求优先实现
有序、可重复列表ArrayList
去重HashSet
去重 + 插入顺序LinkedHashSet / LinkedHashMap
去重或键排序TreeSet / TreeMap
队列、栈ArrayDeque
并发键值ConcurrentHashMap

面向接口声明变量#

List<String> list = new ArrayList<>();
Set<String> set = new HashSet<>();
Map<String, Integer> map = new HashMap<>();

左边用接口,右边用实现类,便于替换实现。

遍历入门#

Collection / List

for (String name : names) {
System.out.println(name);
}

MapentrySet

for (Map.Entry<String, Integer> e : scores.entrySet()) {
System.out.println(e.getKey() + "=" + e.getValue());
}

迭代器、fail-fast、安全删除见 迭代与陷阱

一句话总结#

集合先按问题分类(List/Set/Queue/Map),再选实现类;默认 ArrayList + HashSet + HashMap,有特殊需求再换 Linked*Tree*Concurrent*

文章目录

文章目录