50-常用类-Arrays

1. 问题引出:数组操作的复杂性

在 Java 中,数组是非常常用的基本数据结构,但它在操作上有一定的限制。例如:

  • 数组的大小一旦确定就不能更改。
  • 手动进行数组的排序、查找、填充等操作需要编写很多冗长的代码。

为了简化数组的操作,Java 提供了一个工具类 Arrays ,它包含了大量的静态方法 ,用于处理数组的常见任务,如排序、查找、填充、比较等。该类属于 java.util 包,所有方法都是静态的,因此可以直接通过类名调用。

2.Arrays 类的常用方法

1. 排序

  • Arrays.sort():对数组进行排序。

    • 对于数字、字符类型的数组,Arrays.sort() 会按照升序排序。
    • 对于对象类型的数组,Arrays.sort() 会根据对象的自然顺序进行排序。

    示例:

    java 复制代码
    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():二分查找数组中的元素。该方法要求数组已经排序。

    java 复制代码
    int[] arr = {1, 2, 3, 5, 8};
    int index = Arrays.binarySearch(arr, 5);  // 查找 5 的索引位置
    System.out.println(index);  // 输出 3

3. 填充

  • Arrays.fill():将数组中的所有元素设置为指定的值。

    java 复制代码
    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():将数组转换为字符串形式,方便输出。

    java 复制代码
    int[] arr = {1, 2, 3, 4};
    System.out.println(Arrays.toString(arr));  // 输出 [1, 2, 3, 4]

eg:打印数组内容

java 复制代码
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() 可以递归地将数组转换为字符串。

    java 复制代码
    int[][] arr = {{1, 2}, {3, 4}};
    System.out.println(Arrays.deepToString(arr));  // 输出 [[1, 2], [3, 4]]

5. 数组比较

  • Arrays.equals():比较两个数组是否相等,要求两个数组的长度相同且每个对应的元素都相等。

    java 复制代码
    int[] arr1 = {1, 2, 3};
    int[] arr2 = {1, 2, 3};
    System.out.println(Arrays.equals(arr1, arr2));  // 输出 true
  • Arrays.compare():按字典顺序比较两个数组。

    java 复制代码
    int[] arr1 = {1, 2, 3};
    int[] arr2 = {3, 2, 1};
    System.out.println(Arrays.compare(arr1, arr2));  // 输出负数,因为 arr1 小于 arr2

6. 数组复制

  • Arrays.copyOf():复制数组的部分或全部元素。

    java 复制代码
    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():复制数组的指定范围的元素。

    java 复制代码
    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 表达式进行填充。

    java 复制代码
    int[] arr = new int[5];
    Arrays.setAll(arr, i -> i * 2);  // 使用 Lambda 填充数组,每个元素是其索引的两倍
    System.out.println(Arrays.toString(arr));  // 输出 [0, 2, 4, 6, 8]
相关推荐
寰梦1 小时前
Spring Boot + MinIO 大文件上传完整实战:MD5 秒传、分片上传、断点续传与引用一致性
java·spring boot·文件上传·minio
云和数据.ChenGuang9 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠9 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
silvamux_12 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn13 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠13 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长13 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑13 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
步行cgn15 小时前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc