collections 是 java 中不可实例化的静态工具类,提供排序(sort、reverse、shuffle等)、查找(binarysearch)、极值(max/min)、批量操作(addall、emptyxxx)及线程安全封装(synchronizedxxx、unmodifiablexxx)等通用集合操作方法。

Collections 是 Java 中专为集合操作设计的静态工具类,不能实例化,所有方法都通过 Collections.方法名() 直接调用。它不替代集合本身,而是提供一套高效、安全、可复用的操作“快捷键”,尤其围绕 List 展开,同时兼顾 Set、Queue 等通用集合类型。
排序与顺序控制:只对 List 有效
这些方法全部原地修改,返回 void,不生成新集合:
-
sort(list):要求元素实现Comparable(如String、Integer),否则运行时报ClassCastException -
sort(list, comparator):支持自定义规则,例如按字符串长度降序:(a, b) -> b.length() - a.length() -
reverse(list):简单翻转顺序,适合结果展示或栈式逻辑 -
shuffle(list):使用默认随机源;测试中需固定结果时,传入带种子的Random:Collections.shuffle(list, new Random(123)) -
swap(list, i, j):交换两个索引位置,注意检查索引范围,越界抛IndexOutOfBoundsException -
rotate(list, distance):循环位移,正数向右滚(后n个移到开头),负数向左滚
查找与极值计算:注意前提和边界
部分方法有强依赖条件,误用会导致结果错误或异常:
-
binarySearch(list, key):仅适用于已排序且排序规则一致的List;未找到时返回负插入点(如-3表示应插入索引2),不可直接用== -1判断失败 -
max(collection)和min(collection):支持任意Collection,但元素必须可比较;若为空集合,抛NoSuchElementException,建议先coll.isEmpty()判空 - 若元素无自然顺序(如自定义对象),必须传
Comparator,否则运行时报错
批量操作与集合构造:减少样板代码
避免手写循环,提升初始化与扩展效率:
-
addAll(collection, elements...):支持可变参数,一行完成多元素添加,如Collections.addAll(list, "a", "b", 1, 2) -
emptyList()/emptySet()/emptyMap():返回轻量、不可修改、线程安全的空集合视图,比new ArrayList()更优 -
singletonList(T)/singletonSet(T):创建单元素不可变集合,适合常量场景或 API 返回值 -
unmodifiableList(list)等系列方法:返回原始集合的只读包装,任何修改操作(add、set、clear)立即抛UnsupportedOperationException
线程安全与视图封装:生产环境关键能力
这些方法返回的是原始集合的“视图”,不是深拷贝,修改原集合会影响视图:
-
synchronizedList(list)等同步包装器:为非线程安全集合(如ArrayList)添加 synchronized 锁,保障单个操作原子性 - ⚠️ 注意:迭代仍需手动同步,否则可能抛
ConcurrentModificationException,推荐写法:synchronized(list) { for (E e : list) { ... } } -
unmodifiableXxx与synchronizedXxx可叠加使用,例如先只读再加锁,或反之,按需组合
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











