Collections工具类是Java中用于简化集合操作的静态方法集合,涵盖排序、查找、构造、增强和线程安全封装五大方向,所有方法均通过Collections.方法名()调用,不创建实例。

Collections工具类是Java集合操作的静态方法集合,不创建实例,所有功能都通过Collections.方法名()直接调用。它不是集合本身,而是专为简化List、Set等Collection实现类的常见操作而设计,重点覆盖排序、查找、构造、增强和线程安全封装五大方向。
排序与顺序调整:只对List生效,注意前提条件
这类操作几乎全部限定在List类型上,且多数是原地修改,不生成新集合。
-
sort(list):要求元素实现
Comparable接口(如String、Integer),否则运行时报ClassCastException;自定义类需重写compareTo() - sort(list, comparator):支持按字符串长度、对象字段等灵活排序,无需改动实体类
- reverse(list):简单高效地翻转列表顺序,适合结果倒序展示或栈式访问
-
shuffle(list):使用默认随机源打乱顺序;若需可重现结果(如单元测试),应传入带种子的
Random对象:Collections.shuffle(list, new Random(42)) -
swap(list, i, j):交换两个索引位置的元素,注意越界会抛
IndexOutOfBoundsException
查找与极值计算:区分适用范围和异常场景
部分方法通用性强,但调用前必须确认前提条件,否则结果不可靠或直接抛异常。
-
binarySearch(list, key):仅适用于已排序的List,且排序规则必须与查找逻辑一致;未找到时返回负插入点(如-3表示应插入索引2),不能简单用
== -1判断失败 -
max(collection) / min(collection):适用于任意Collection(List、Set、Queue等);默认按自然顺序比较,若元素无自然序(如未实现
Comparable的自定义对象),必须传Comparator,否则抛ClassCastException - 空集合传入
max/min会抛NoSuchElementException,建议提前判空或配合Optional使用
便捷集合构造与增强:避免样板代码,理解“视图”本质
这些方法能显著减少手动new+add的冗余操作,但要注意返回的是原始集合的“包装视图”,不是副本。
立即学习“Java免费学习笔记(深入)”;
-
emptyList() / emptySet() / emptyMap():返回轻量、不可修改、线程安全的空集合,比
new ArrayList()更高效 - singletonList(T) / singletonSet(T):创建含单个元素的不可变集合,适合常量配置或临时返回
- unmodifiableList(list)等系列方法:禁止后续增删改操作,但底层仍是原集合——修改原集合会影响视图内容
-
addAll(collection, elements...):支持可变参数,一行完成批量添加,比循环
add()更简洁
线程安全与同步封装:生产环境必须留意的细节
同步包装器提供基础线程安全能力,但有明显局限性,不能替代并发集合或锁机制。
-
synchronizedList(list)等方法返回同步代理对象,单个操作(如
get()、add())是线程安全的 - 迭代操作(如for-each、
iterator())仍需外部加锁,否则可能抛ConcurrentModificationException - 若高并发读写频繁,优先考虑
CopyOnWriteArrayList或ConcurrentHashMap等专用并发集合


















