Collections工具类是Java集合操作的静态工具,不可实例化,提供排序、查找、构造、增强和线程安全五大功能;仅对List生效的核心操作包括sort、reverse、shuffle、swap;通用方法如binarySearch、max、min适用于任意Collection;还提供空集合、单元素集合、不可变包装、同步包装及批量操作等便捷功能。

Collections工具类是Java集合操作的“遥控器”,不是集合本身,也不能被实例化。所有方法都通过 Collections.方法名() 静态调用,专为简化 List、Set 等集合的常见操作而设计,重点覆盖排序、查找、构造、增强和线程安全五大方向。
只对List生效的核心操作
这些方法仅适用于 List 类型(如 ArrayList、LinkedList),且全部原地修改,不返回新集合:
-
sort(list):按元素自然顺序升序排列,要求元素实现
Comparable(如 String、Integer);否则运行时报ClassCastException -
sort(list, comparator):支持自定义规则,例如按字符串长度降序:
Collections.sort(list, (a, b) -> b.length() - a.length()) - reverse(list):直接翻转顺序,常用于结果倒序展示或栈式逻辑
-
shuffle(list):默认随机打乱,若需可重现效果(如测试),可传入带种子的 Random:
Collections.shuffle(list, new Random(123)) -
swap(list, i, j):高效交换两个索引位置的元素,注意索引越界会抛
IndexOutOfBoundsException
通用查找与极值计算
这类方法适用于任意 Collection(List、Set、Queue 等),但有明确前提:
- binarySearch(list, key):必须在已排序的 List 上调用,且排序规则要与查找一致;未找到时返回负插入点(如 -4 表示应插入索引 3),不能简单用 == -1 判断失败
-
max(coll) 和 min(coll):依赖元素自然顺序;若为自定义对象且未实现
Comparable,需显式传 Comparator,否则抛异常;空集合会触发NoSuchElementException,建议判空或配合 Optional 使用
便捷构造与安全封装
避免手写样板代码,同时提升安全性:
立即学习“Java免费学习笔记(深入)”;
- emptyList() / emptySet() / emptyMap():返回轻量、不可修改、线程安全的空集合视图
- singletonList(T):快速创建含单个元素的不可变 List,比 new + add 更简洁
-
unmodifiableList(list) 等系列方法:返回原始集合的只读包装,任何 add/set/clear 操作立即抛
UnsupportedOperationException - synchronizedList(list) 等同步包装器:为非线程安全集合添加 synchronized 锁,但遍历时仍需手动同步迭代块,否则可能引发并发问题
批量操作与实用增强
提升编码效率与健壮性:
- addAll(collection, elements...):支持可变参数,一行完成多元素添加,比循环调用 add 更高效清晰
-
rotate(list, distance):向右滚动(正数)或向左滚动(负数),例如
rotate(list, 2)把末尾 2 个元素移到开头 - 注意区分 Collection(接口)和 Collections(工具类)——名字差一个 “s”,用途完全不同


















