最常用、最便捷的方式是使用java.util.arrays工具类的sort()和binarysearch()方法:sort()支持基本类型升序排序(双轴快排)与对象数组自定义排序(需comparable或comparator),binarysearch()要求数组已升序,查到返回索引,未查到返回插入点补码。

Java 中对一维数组进行排序和查找,最常用、最便捷的方式就是使用 java.util.Arrays 工具类。它提供了针对基本类型和对象数组的静态方法,无需手动实现算法,既高效又安全。
快速排序:sort() 方法的多种用法
Arrays.sort() 是最核心的排序方法,底层使用双轴快排(基本类型)或 TimSort(引用类型),性能稳定且经过充分优化。
- 对整型数组升序排序:
int[] arr = {5, 2, 8, 1}; Arrays.sort(arr);→ 结果为{1, 2, 5, 8} - 对字符串数组排序:
String[] words = {"banana", "apple", "cherry"}; Arrays.sort(words);→ 按字典序排列 - 指定范围排序(如只排前三个元素):
Arrays.sort(arr, 0, 3); - 自定义比较规则(仅适用于对象数组):
Arrays.sort(students, Comparator.comparing(Student::getScore).reversed());
二分查找:binarySearch() 的前提与用法
Arrays.binarySearch() 要求目标数组必须已升序排列,否则结果不可预测。它返回匹配元素的索引;未找到则返回一个负值(表示插入点的补码)。
- 基础用法:
int index = Arrays.binarySearch(arr, 5);—— 若arr = {1, 3, 5, 7},返回2 - 查找失败时返回值示例:
Arrays.binarySearch(arr, 4)返回-3,说明若插入4,应放在索引2处(因为-(-3) - 1 = 2) - 同样支持范围查找:
Arrays.binarySearch(arr, 1, 3, 5)表示在索引[1, 3)范围内查找5
查找前务必排序:常见错误提醒
初学者常忽略 binarySearch() 对有序性的严格要求。直接在无序数组上调用,可能返回错误索引或负数,且无法判断是“没找到”还是“找错了位置”。
- 正确流程:先调用
Arrays.sort(arr),再调用Arrays.binarySearch(arr, key) - 若需保持原数组顺序,可复制后再排序查找:
int[] copy = arr.clone(); Arrays.sort(copy); int idx = Arrays.binarySearch(copy, key); - 对于频繁查找场景,建议封装成工具方法,自动处理排序逻辑或改用
TreeSet/HashMap等更适合查找的数据结构
其他实用辅助方法
除了排序和查找,Arrays 还提供多个提升开发效率的方法:
-
Arrays.toString(arr):将数组转为易读字符串(如[1, 2, 3]),调试必备 -
Arrays.equals(arr1, arr2):安全比较两个数组内容是否完全相同(注意不是引用比较) -
Arrays.fill(arr, 0):批量赋值,比循环更简洁 -
Arrays.copyOf(arr, newLength):扩容或截断数组,返回新数组











