Collections 是 Java 中专为集合操作设计的静态工具类,不可实例化,所有方法均通过 Collections.方法名() 调用;其核心功能包括 List 的排序(sort)、反转(reverse)、打乱(shuffle)、交换(swap)、位移(rotate),Collection 的查找(binarySearch,需预排序)、极值获取(max/min,要求元素可比较且非空),以及批量添加(addAll)、不可修改视图(unmodifiableList)、线程安全包装(synchronizedList);需注意 Collection 与 Collections 的区别、方法作用域限制(如 sort 仅限 List)及原地修改无返回值等关键避坑点。

Collections 是 Java 中专为集合操作设计的静态工具类,不是集合本身,也不能被实例化。所有方法都通过 Collections.方法名() 直接调用,核心目标是让 List、Set 等集合的操作更简洁、安全、高效。
排序与顺序调整(仅限 List)
这类方法全部作用于 List,且均为原地修改、返回 void:
-
自然排序:用
Collections.sort(list),要求元素实现Comparable(如 String、Integer); -
自定义排序:传入 Comparator,例如按字符串长度升序:
Collections.sort(list, (a, b) -> a.length() - b.length()); -
反转顺序:
Collections.reverse(list),直接翻转原有顺序; -
随机打乱:
Collections.shuffle(list),适合洗牌或抽样场景; -
交换元素:
Collections.swap(list, i, j),高效完成两个索引位置互换; -
循环位移:
Collections.rotate(list, distance),正数向右滚动(最后 n 个移到开头),负数向左。
查找与极值获取(注意前提条件)
这些方法对数据状态有明确要求,误用会导致结果错误或异常:
-
二分查找:
Collections.binarySearch(list, key)必须在已升序排序的 List 上调用,否则结果不可信; -
最大/最小值:
Collections.max(coll)和Collections.min(coll)支持任意 Collection(List、Set、Queue),但元素必须可比较; - 若集合为空,
max/min会抛出NoSuchElementException,建议使用前判空。
批量操作与安全增强
避免手写循环,同时提供关键运行时保障:
立即学习“Java免费学习笔记(深入)”;
-
批量添加:
Collections.addAll(list, "a", "b", 1, 2),支持可变参数,比逐个 add 更简洁; -
不可修改视图:
Collections.unmodifiableList(list)返回只读包装,任何修改操作立即抛UnsupportedOperationException; -
线程安全包装:
Collections.synchronizedList(list)为 ArrayList 等非线程安全集合加同步锁,但遍历时仍需手动同步迭代块。
高频避坑提醒
几个极易混淆的关键点:
- Collection ≠ Collections:前者是接口(List、Set 的父接口),后者是工具类,名字多一个 “s” 就是本质区别;
-
方法作用域不同:
addAll、max、min适用于所有 Collection;而sort、shuffle、reverse等仅限 List; -
原地操作无返回值:所有修改类方法(
sort、reverse、shuffle等)都是 void,直接改变原集合,不生成新对象。


















