collections 是 java 中操作集合的静态工具类,提供排序、查找、安全封装、批量操作等开箱即用方法,不可实例化,所有方法均作用于原集合。

Collections 是 Java 中专用于操作集合的静态工具类,不是集合本身,也不能实例化。它把常见集合操作封装成开箱即用的方法,省去重复编码,提升开发效率和代码可读性。
排序与顺序控制
这是 Collections 最高频的使用场景,所有方法均直接修改原 List:
- 自然排序:调用 Collections.sort(list),要求元素实现 Comparable(如 String、Integer);
- 自定义排序:传入 Comparator,支持 Lambda 表达式,例如按字符串长度降序:Collections.sort(list, (a, b) -> b.length() - a.length());
- 反转顺序:用 Collections.reverse(list) 快速倒序,适合翻页、最新优先等逻辑;
- 随机打乱:调用 Collections.shuffle(list),基于默认随机源,常用于抽奖、题库抽题;
- 交换元素:用 Collections.swap(list, i, j) 高效完成两个索引位置的值互换,比手动临时变量更简洁。
查找与极值计算
无需手写循环,几行代码即可完成常见统计与定位任务:
- 二分查找:Collections.binarySearch(list, key) 必须在已排序 List 上调用,返回索引或负插入点;
- 最大最小值:Collections.max(collection) 和 Collections.min(collection) 支持任意 Collection(List、Set、Queue),自动按自然序比较;
- 元素频次:Collections.frequency(collection, obj) 统计指定对象在集合中出现次数,适用于去重前的数据分析;
- 填充集合:Collections.fill(list, obj) 将整个 List 元素统一设为某值,常用于初始化或重置状态。
安全与不可变集合构建
应对多线程与防御性编程需求,Collections 提供轻量级包装方案:
- 线程安全包装:如 Collections.synchronizedList(new ArrayList()) 返回同步代理,但注意迭代仍需手动加锁;
- 不可变视图:Collections.unmodifiableList(list) 返回只读包装,任何 add/remove 操作都会抛 UnsupportedOperationException;
- 空/单元素集合:Collections.emptyList()、Collections.singletonList("x") 等方法返回不可变集合,内存高效且线程安全,推荐替代 new ArrayList();
- JDK 9+ 替代建议:新项目优先用 List.of()、Set.of(),语法更简,类型推导更强,且默认不可变。
批量操作与便捷初始化
简化集合构造与数据注入流程:
- 批量添加:Collections.addAll(collection, elements...) 一次性向任意 Collection 添加多个元素;
- 旋转操作:Collections.rotate(list, distance) 向右旋转(正数)或向左旋转(负数),适用于轮播、滑动窗口等场景;
- 空集合判断辅助:Collections.emptySet()、Collections.emptyMap() 等返回不可变空集合,避免 null 引用和重复 new 操作;
- 同步包装器组合使用时,建议配合 Collections.unmodifiableXXX 做二次封装,防止外部绕过同步直接修改底层集合。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











