collections是专为集合服务的不可实例化工具类,提供排序、查找、批量操作等静态方法;所有修改类方法均原地操作且返回void;仅list支持sort、reverse等;使用前需确保集合状态满足前提(如binarysearch要求已排序)。

Collections 工具类不是集合,而是一套专为集合服务的“操作遥控器”——它不能被实例化,所有方法都通过 Collections.方法名() 直接调用。核心目标是让 List、Set 等集合的操作更简洁、更安全、更高效。
排序与顺序调整(仅限 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),正数向右滚(后distance个移到开头),负数向左滚。
查找与极值获取(注意前提条件)
部分方法对集合状态有强依赖,误用会导致结果错误或异常。
-
二分查找:
Collections.binarySearch(list, key)必须在已升序排序的List上调用,否则结果不可信; -
最大/最小值:
Collections.max(coll)和Collections.min(coll)支持任意Collection(List、Set、Queue),但要求元素可比较; -
空集合防护:若集合为空,
max/min会抛NoSuchElementException,建议调用前先判空; -
元素频次统计:
Collections.frequency(coll, obj)可快速统计某元素在集合中出现次数。
批量操作与安全增强(提升健壮性)
避免手写循环,也提供关键运行时保障。
-
批量添加:
Collections.addAll(list, "a", "b", 1, 2),支持可变参数,比逐个add更简洁; -
不可修改视图:
Collections.unmodifiableList(list)返回只读包装,任何修改操作立即抛UnsupportedOperationException; -
线程安全包装:
Collections.synchronizedList(list)为ArrayList等非线程安全集合加同步锁,但遍历时仍需手动同步迭代块; -
空/单元素集合:
Collections.emptyList()、Collections.singletonList(42)、Collections.emptyMap()等返回不可变常量集合,节省内存且线程安全。
避坑要点(高频错误)
名字差一个 “s”,语义天壤之别。
-
Collection ≠ Collections:前者是接口(如
List、Set的父接口),后者是工具类; -
方法作用域不同:
addAll、max、min适用于所有Collection;但sort、shuffle、reverse等仅限List; -
原地操作无返回值:所有修改类方法(
sort、reverse、shuffle等)都是void,直接改变原集合; -
自定义对象排序需显式处理:若对
Person类列表调用sort而未提供Comparator,且该类未实现Comparable,将编译失败或运行时报ClassCastException。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











