50-常用类-Arrays
1.问题引出数组操作的复杂性在 Java 中数组是非常常用的基本数据结构但它在操作上有一定的限制。例如数组的大小一旦确定就不能更改。手动进行数组的排序、查找、填充等操作需要编写很多冗长的代码。为了简化数组的操作Java 提供了一个工具类Arrays它包含了大量的静态方法用于处理数组的常见任务如排序、查找、填充、比较等。该类属于java.util包所有方法都是静态的因此可以直接通过类名调用。2.Arrays类的常用方法1.排序Arrays.sort()对数组进行排序。对于数字、字符类型的数组Arrays.sort()会按照升序排序。对于对象类型的数组Arrays.sort()会根据对象的自然顺序进行排序。示例int[] arr {5, 3, 8, 1, 2}; Arrays.sort(arr); // 对数组进行升序排序 System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3, 5, 8]注意1.因为数组是引用类型所以通过sort排序后会直接影响到实参 arr2.查找Arrays.binarySearch()二分查找数组中的元素。该方法要求数组已经排序。int[] arr {1, 2, 3, 5, 8}; int index Arrays.binarySearch(arr, 5); // 查找 5 的索引位置 System.out.println(index); // 输出 33.填充Arrays.fill()将数组中的所有元素设置为指定的值。int[] arr new int[5]; Arrays.fill(arr, 10); // 将 arr 数组的所有元素填充为 10 System.out.println(Arrays.toString(arr)); // 输出 [10, 10, 10, 10, 10]4.数组转换Arrays.toString()将数组转换为字符串形式方便输出。int[] arr {1, 2, 3, 4}; System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3, 4]eg打印数组内容public class ArraysMethod01 { public static void main(string[] args){ Integer[] integers {1,20,90}; //原方法遍历数组 for(int i0;iintegers.length;i){ System.out.println(integers[i]); } //直接使用Arrays.tostring方法显示数组 System.out.println(Arrays.toString(integers))//输出 [1,20,90] ,把数组内容转换成字符串形式再套上[ ] 输出出来 } }Arrays.deepToString()如果数组包含嵌套数组使用Arrays.deepToString()可以递归地将数组转换为字符串。int[][] arr {{1, 2}, {3, 4}}; System.out.println(Arrays.deepToString(arr)); // 输出 [[1, 2], [3, 4]]5.数组比较Arrays.equals()比较两个数组是否相等要求两个数组的长度相同且每个对应的元素都相等。int[] arr1 {1, 2, 3}; int[] arr2 {1, 2, 3}; System.out.println(Arrays.equals(arr1, arr2)); // 输出 trueArrays.compare()按字典顺序比较两个数组。int[] arr1 {1, 2, 3}; int[] arr2 {3, 2, 1}; System.out.println(Arrays.compare(arr1, arr2)); // 输出负数因为 arr1 小于 arr26.数组复制Arrays.copyOf()复制数组的部分或全部元素。int[] arr {1, 2, 3, 4, 5}; int[] copiedArr Arrays.copyOf(arr, 3); // 复制前 3 个元素 System.out.println(Arrays.toString(copiedArr)); // 输出 [1, 2, 3]Arrays.copyOfRange()复制数组的指定范围的元素。int[] arr {1, 2, 3, 4, 5}; int[] copiedArr Arrays.copyOfRange(arr, 1, 4); // 复制索引 1 到 3 的元素 System.out.println(Arrays.toString(copiedArr)); // 输出 [2, 3, 4]7.数组填充与替换Arrays.setAll()为数组的每个元素设置一个值可以使用 Lambda 表达式进行填充。int[] arr new int[5]; Arrays.setAll(arr, i - i * 2); // 使用 Lambda 填充数组每个元素是其索引的两倍 System.out.println(Arrays.toString(arr)); // 输出 [0, 2, 4, 6, 8]