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排序后,会直接影响到实参 arr
2.查找
Arrays.binarySearch():二分查找数组中的元素。该方法要求数组已经排序。int[] arr = {1, 2, 3, 5, 8}; int index = Arrays.binarySearch(arr, 5); // 查找 5 的索引位置 System.out.println(index); // 输出 3
3.填充
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 i=0;i<integers.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 小于 arr2
6.数组复制
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]