Java中Arrays工具类提供sort()排序和binarySearch()查找方法:sort()修改原数组,支持基本类型、对象及自定义Comparator;binarySearch()要求数组已排序,基于二分查找返回索引或插入点。

Java 中的 Arrays 工具类提供了便捷的排序和查找方法,核心是基于数组本身操作,不改变原数组结构(除排序外),且要求元素类型支持比较(如基本类型、实现 Comparable 的引用类型,或传入 Comparator)。
排序:用 sort() 方法
Arrays.sort() 是最常用的排序方法,有多种重载形式:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 对基本类型数组(如
int[]、double[])直接升序排列,内部使用双轴快排(int等)或归并(Object[]) - 对对象数组(如
String[]、自定义类数组),要求元素实现Comparable,否则运行时报ClassCastException - 支持指定范围排序:例如
Arrays.sort(arr, fromIndex, toIndex),注意toIndex是**不包含**的右边界 - 支持自定义比较逻辑:传入
Comparator,比如按字符串长度排序:Arrays.sort(strArray, Comparator.comparing(String::length));
查找:用 binarySearch() 方法
Arrays.binarySearch() 基于二分查找,**必须在已排序的数组上调用**,否则结果不可预测:
- 返回目标值的索引(>=0);未找到则返回一个负数,其绝对值表示插入点(即应插入的位置,使数组保持有序)
- 同样支持基本类型、对象数组,以及带
Comparator的对象查找 - 也支持子范围查找:
Arrays.binarySearch(arr, from, to, key) - 注意:不能用于未排序数组,也不等价于线性遍历 —— 它不保证找第一个/最后一个匹配项(重复元素时返回任意一个位置)
实用小技巧与注意事项
- 排序会修改原数组,如果需要保留原始顺序,先用
Arrays.copyOf()复制一份 - 对
ArrayList或其他集合,要用Collections.sort(),不是Arrays.sort() - 查找前务必确认数组已排序;可先调用
Arrays.sort()再查,但要注意性能开销 - 对于含
null的对象数组,使用Comparator.nullsFirst()或nullsLast()避免空指针异常
简单示例片段
int[] nums = {5, 2, 8, 1};<br>
Arrays.sort(nums); // → {1, 2, 5, 8}<br>
int idx = Arrays.binarySearch(nums, 5); // → 2<br>
String[] words = {"cat", "dog", "bird"};<br>
Arrays.sort(words, Comparator.comparing(String::length)); // → {"cat", "dog", "bird"}

















