java.util.Arrays是Java中一个非常实用的工具类,提供了各种操作数组的静态方法。下面我将详细介绍Arrays类的主要功能和使用方法。
1. 数组排序
Arrays类提供了多种排序方法:
基本类型数组排序
int[] numbers = {5, 3, 9, 1, 7};
Arrays.sort(numbers); // 升序排序
// 结果: [1, 3, 5, 7, 9]
// 指定范围排序
int[] partial = {5, 3, 9, 1, 7};
Arrays.sort(partial, 1, 4); // 只排序索引1到3(不包括4)的元素
// 结果: [5, 1, 3, 9, 7]
对象数组排序
对象数组排序要求元素实现Comparable接口或提供Comparator:
String[] names = {"John", "Alice", "Bob"};
Arrays.sort(names);
// 结果: ["Alice", "Bob", "John"]
// 使用自定义比较器
Arrays.sort(names, (a, b) -> b.compareTo(a)); // 降序排序
// 结果: ["John", "Bob", "Alice"]
并行排序(Java 8+)
对于大型数组,可以使用并行排序提高性能:
int[] largeArray = new int[1000000];
Arrays.parallelSort(largeArray);
2. 数组搜索
Arrays提供了二分查找方法,要求数组必须是有序的:
int[] numbers = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(numbers, 5); // 返回2
int notFound = Arrays.binarySearch(numbers, 4); // 返回-3 (插入点为2,返回-2-1)
3. 数组比较
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
int[] c = {1, 2, 4};
boolean equalAB = Arrays.equals(a, b); // true
boolean equalAC = Arrays.equals(a, c); // false
对于多维数组,使用deepEquals:
int[][] arr1 = {{1, 2}, {3, 4}};
int[][] arr2 = {{1, 2}, {3, 4}};
boolean deepEqual = Arrays.deepEquals(arr1, arr2); // true
4. 数组填充
int[] numbers = new int[5];
Arrays.fill(numbers, 10); // 全部填充为10
// 结果: [10, 10, 10, 10, 10]
// 部分填充
Arrays.fill(numbers, 1, 3, 20); // 填充索引1到2(不包括3)
// 结果: [10, 20, 20, 10, 10]
5. 数组复制
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, 3); // 复制前3个元素
// 结果: [1, 2, 3]
int[] rangeCopy = Arrays.copyOfRange(original, 1, 4); // 复制索引1到3(不包括4)
// 结果: [2, 3, 4]
6. 数组转字符串
int[] numbers = {1, 2, 3};
String str = Arrays.toString(numbers); // "[1, 2, 3]"
// 多维数组使用deepToString
int[][] matrix = {{1, 2}, {3, 4}};
String matrixStr = Arrays.deepToString(matrix); // "[[1, 2], [3, 4]]"
7. Java 8新增功能
流操作
int[] numbers = {1, 2, 3, 4, 5};
Arrays.stream(numbers)
.filter(n -> n % 2 == 0)
.forEach(System.out::println); // 输出2和4
parallelPrefix (累积计算)
int[] numbers = {1, 2, 3, 4};
Arrays.parallelPrefix(numbers, (a, b) -> a + b);
// 结果: [1, 3, 6, 10] (累积和)
8. 数组比较器
String[] names = {"John", "Alice", "Bob"};
Arrays.sort(names, Arrays.compare(String::compareTo));
9. 数组不匹配查找
Java 9新增方法,查找两个数组第一个不匹配的索引:
int[] a = {1, 2, 3, 4};
int[] b = {1, 2, 4, 4};
int mismatch = Arrays.mismatch(a, b); // 返回2
10. 注意事项
- Arrays类所有方法都是静态的,不需要创建实例
- 排序和搜索方法对基本类型和对象类型有重载版本
- 并行操作在大数据集上性能更好,但小数组可能反而更慢
- 修改方法(如sort)会直接修改原数组,而不是返回新数组
Arrays类极大简化了Java中对数组的操作,是日常开发中非常实用的工具类。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




暂无评论内容