Arrays工具类提供静态方法高效处理数组:sort()支持基本类型和对象排序(需Comparable或Comparator),binarySearch()要求数组已升序,fill()可全数组或区间填充。

Java 中的 Arrays 工具类提供了对数组操作的一系列静态方法,无需手动实现算法,就能高效完成排序、查找和填充等常见任务。关键在于理解每个方法的适用条件和使用细节。
快速排序:用 sort() 一步到位
Arrays.sort() 是最常用的排序方法,支持基本类型数组和对象数组(要求对象实现 Comparable 或传入 Comparator)。
- 对
int[]、double[]等基本类型数组,直接调用Arrays.sort(arr)即可,底层采用双轴快排(Java 7+),性能稳定 - 对
String[]或自定义对象数组,若类已实现Comparable,同样可直接排序;否则需传入Comparator,例如:
Arrays.sort(students, Comparator.comparing(Student::getScore).reversed()); - 只排序子区间?可用重载方法
sort(arr, fromIndex, toIndex),注意toIndex是**不包含**的右边界
二分查找:必须先排序,再用 binarySearch()
Arrays.binarySearch() 要求目标数组**已升序排列**,否则结果不可预测。它返回匹配元素的索引;未找到时返回一个负数(表示插入点的补码)。
- 基础用法:
int index = Arrays.binarySearch(sortedArr, key); - 查找对象时,若未实现
Comparable,需提供Comparator,确保比较逻辑与排序时一致 - 判断是否找到:只需检查返回值是否 ≥ 0,例如
if (index >= 0) { /* 找到了 */ } - 注意:不要对未排序数组强行使用,它不会自动排序,也不会报错,但结果无意义
批量填充:用 fill() 统一设值
Arrays.fill() 可将指定值快速写入整个数组或某一段范围,比循环赋值更简洁、更高效。
- 全数组填充:
Arrays.fill(arr, 0);—— 所有元素设为 0 - 区间填充:
Arrays.fill(arr, 2, 5, -1);—— 将索引 2、3、4(不含 5)位置设为 -1 - 支持所有基本类型和对象类型;对对象数组,填入的是同一引用(不是深拷贝)
- 若需按规律生成值(如递增序列),
fill()不适用,应改用IntStream.range().mapToObj()或手动循环
这些方法都是静态的、开箱即用的,不需要创建实例。只要记住排序是前提、查找依赖有序、填充讲求范围,日常数组操作就变得非常轻量。


















