一、Arrays类的定义
- Arrays类位于 java.util
二、Arrays 类的常用方法
- Arrays.toString(Object[] array)
- 返回数组元素的字符串形式。
Integer[] data = {1, 2, 3};
System.out.println(Arrays.toString(data)); // [1, 2, 3]
- Arrays.fill(Object[] array, Object obj)
- 用指定元素填充整个数组 (会替换掉数组中原来的元素)。
Integer[] data = {1, 2, 3, 4};
Arrays.fill(data, 9);
System.out.println(Arrays.toString(data)); // [9, 9, 9, 9]
- Arrays.fill(Object[] array, int fromIndex, int toIndex, Object obj)
- 用指定元素填充数组,从起始位置到结束位置, 左闭右开区间,取头不取尾 (会替换掉数组中原来的元素)。
Integer[] data = {1, 2, 3, 4};
Arrays.fill(data, 0, 2, 9);
System.out.println(Arrays.toString(data)); // [9, 9, 3, 4]
- Arrays.sort(Object[] array)
- 对数组元素进行排序 (串行排序)。
String[] data = {"1", "4", "3", "2"};
System.out.println(Arrays.toString(data)); // [1, 4, 3, 2]
Arrays.sort(data);
System.out.println(Arrays.toString(data)); // [1, 2, 3, 4]
- Arrays.sort(Object[] array, int fromIndex, int toIndex)
- 对指定范围内的数组元素进行排序 (左闭右开、串行排序)。
String[] data = {"1", "4", "3", "2"};
System.out.println(Arrays.toString(data)); // [1, 4, 3, 2]
// 对下标[0, 3)的元素进行排序,即对1,4,3进行排序,2保持不变
Arrays.sort(data, 0, 3);
System.out.println(Arrays.toString(data)); // [1, 3, 4, 2]
- Arrays.binarySearch(Object[] array, Object key)
注意:在调用该方法之前,必须先调用 Arrays.sort() 方法进行排序,如果数组没有排序,那么结果是不确定的,此外如果数组中包含多个指定元素,则无法保证将找到哪个元素。
- 使用二分法查找数组内指定元素的索引值。
- 搜索元素是数组元素,返回该元素索引值。
Integer[] data = {1, 3, 5, 7};
Arrays.sort(data);
System.out.println(Arrays.binarySearch(data, 1)); // 0
- 搜索元素不是数组元素,且小于数组中的最小值。
Integer[] data = {1, 3, 5, 7};
Arrays.sort(data);
// 此时程序会把数组看作 {0, 1, 3, 5, 7}
// 此时0的索引值为0,则搜索0时返回 -(0 + 1) = -1
System.out.println(Arrays.binarySearch(data, 0)); // -1
- 搜索元素不是数组元素,且大于数组中的最大值。
Integer[] data = {1, 3, 5, 7};
Arrays.sort(data);
// 此时程序会把数组看作 {1, 3, 5, 7, 9}
// 此时9的索引值为4,则搜索8时返回 -(4 + 1) = -5
System.out.println(Arrays.binarySearch(data, 9)); // -5
- 搜索元素不是数组元素,但在数组范围内。
Integer[] data = {1, 3, 5, 7};
Arrays.sort(data);
// 此时程序会把数组看作 {1, 2, 3, 5, 7}
//此时2的索引值为1,则搜索2时返回 -(1 + 1) = -2
System.out.println(Arrays.binarySearch(data, 2)); // -2
- Arrays.binarySearch(Object[] array, int fromIndex, int toIndex, Object obj)
- 使用二分法查找数组内指定范围内的指定元素的索引值。
Integer[] data = {1, 3, 5, 7};
Arrays.sort(data);
// {1, 3},3的索引值为1
System.out.println(Arrays.binarySearch(data, 0, 2, 3)); // 1
- Arrays.equals(Object[] array1, Object[] array2)
- 判断两个数组是否相等。
- 数组元素为基本数据类型时,依次比较值。
- 数组元素为引用数据类型时,依次调用元素的 equals() 方法进行比较。
- 即如果两个数组被认为是相等的,则两个数组中应包含相同顺序的相同元素。
Integer[] data1 = {1, 2, 3};
Integer[] data2 = {1, 2, 3};
System.out.println(Arrays.equals(data1, data2)); // true