ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

50-常用类-Arrays

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排序后,会直接影响到实参 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)); // 输出 true
  • Arrays.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]
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进