Collections工具类提供静态方法操作集合,无需实例化,用于排序、查找、包装、填充等;仅List支持排序/反转/打乱/交换;binarySearch需预排序;包装方法返回不可变或线程安全视图;fill、copy、addAll提升初始化效率。

Java中的Collections工具类是一套专为集合操作设计的静态方法集合,不需实例化,直接通过Collections.方法名()调用。它不是用来替代List、Set或Map,而是帮你更安全、更高效地操作已有集合——比如排序、查找、包装成不可变视图、批量填充或线程同步等。
基础集合操作:排序、反转、打乱、交换
这些方法都只作用于List类型,是日常最常接触的功能:
-
自然排序:用
Collections.sort(list),要求元素实现Comparable(如String、Integer可直接用); -
自定义排序:传入
Comparator,比如按字符串长度排序:Collections.sort(words, (a, b) -> a.length() - b.length()); -
反转顺序:直接
Collections.reverse(list),原地翻转,不新建对象; -
随机打乱:用
Collections.shuffle(list),适合模拟抽签、洗牌等场景; -
交换两个位置:
Collections.swap(list, i, j),比手动临时变量更简洁安全。
查找与统计:二分查找、最大最小值、频次统计
注意:二分查找前必须确保List已排序,否则结果不可靠。
-
二分查找:返回索引(找到)或负数(未找到),调用
Collections.binarySearch(sortedList, key); -
找极值:
Collections.max(list)和Collections.min(list),同样依赖Comparable; -
统计出现次数:
Collections.frequency(collection, obj),支持任意Collection(不只是List); -
批量替换:用
Collections.replaceAll(list, oldVal, newVal),一次性改掉所有匹配项。
集合包装与安全控制
这类方法不修改原集合,而是返回一个“包装视图”,实际数据仍由原集合管理:
立即学习“Java免费学习笔记(深入)”;
-
空集合常量:用
Collections.emptyList()代替new ArrayList(),节省内存且线程安全; -
单元素集合:如
Collections.singletonList("abc"),轻量、不可变、避免无谓扩容; -
不可变视图:如
Collections.unmodifiableList(original),后续任何修改操作都会抛UnsupportedOperationException; -
线程安全包装:如
Collections.synchronizedList(new ArrayList()),但注意遍历时仍需手动加锁(如synchronized(list) { for(...) {...} })。
便捷填充与拷贝
适合初始化或批量处理场景:
-
填充全部元素:
Collections.fill(list, "default"),把整个List设为同一个值; -
集合间拷贝:目标List必须已有足够容量,否则抛
IndexOutOfBoundsException,正确写法是先初始化目标List再拷贝:List;dest = new ArrayList(src.size()); Collections.copy(dest, src) -
批量添加:用
Collections.addAll(list, "a", "b", "c"),比循环add更简洁。
基本上就这些。Collections工具类不复杂但容易忽略,关键是理解每种方法的约束条件(比如sort要求Comparable、binarySearch要求已排序),用对了能少写很多样板代码,也更不容易出错。










