Array工具类

本文介绍了如何在Java中使用Arrays类的各种方法对数组进行操作,包括比较、复制、填充、排序和搜索等。通过实例展示了静态初始化数组及常用方法的应用。

//定义一个 a 数组,使用静态初始化

    int[] a = new int[]{3, 4, 5, 6};

    //定义一个 b 数组, 使用静态初始化

    int[] b = new int[]{3, 4, 5, 6};


    //使用 Arrays类的 equals方法.

    //boolean equals(type[] a, type[] b)如果 a 数组 b数组长度相等,元素依次相同,则会返回 true

    //如果 a 数组 b 数组 长度相等, 每个元素依次相等, 将会输出 true

    System.out.println("a 数组 b数组 是否相等呢?" + Arrays.equals(a, b));


    //使用 Arrays类的 copyOf方法.

    //type[] copyOf(type[] original, int length)

    //这个方法会把 original(原件)数组复制成一个新数组, 其中 length 是新数组的长度.

    //如果 length 小于 original 数组的长度, 新数组就是原数组前面 length个元素.

    //如果 length大于 original 数组的长度, 新数组前面元素就是原数组的所有元素,

    //后面补充 0(数值类型) / false(布尔类型) / null(引用类型)看原数组是啥类型.

    //复制 a 数组, 生成一个 a2 数组, 然后对比是否相等

    int[] a2 = Arrays.copyOf(a, 6);

    System.out.println("a 数组 a2 数组 是否相等呢?" + Arrays.equals(a, a2));


    //使用 Arrays类的 toString方法

    //String toString(type[] a)

    //该方法将一个数组转换成一个字符串进行输出.该方法按照顺序把多个数组元素连起来,

    //多个数组元素之间使用英文逗号 , 和空格隔开.

    //输出 a2 数组

    System.out.println("a2 数组的元素为:" + Arrays.toString(a2));


    //使用 Arrays 类的 fill 方法

    //void fill(type[]a, type val)该方法将会把 a 数组的所有元素都赋值为 val

    //void fill(type[]a, int formIndex, int toIndex, type val)

    //该方法和上面方法作用相同, 区别是将数组a fromIndex toIndex索引处的数组元素赋值为 val

    // a2 数组的第 3个元素(包括) 到第 5个元素(不包括)赋值为 1

    Arrays.fill(a2, 2, 4, 1);

    //输出 a2 数组元素看看

    System.out.println("a2 数组的元素为:" + Arrays.toString(a2));


    //使用 Arrays 类的 sort 方法

    //void sort(type[] a)该方法对 数组a 的元素进行排序.

    //void sort(type[] a, int formIndex, int toIndex)该方法和上面方法类似, 区别是

    //仅仅对 fromIndex toIndex 索引的元素进行排序.

    // a2 数组进行排序

    Arrays.sort(a2);

    //输出 a2 数组

    System.out.println("a2 数组的元素为:" + Arrays.toString(a2));


    //使用二分搜索法来搜索制定的char型数组,以获得指定的值。

    Arrays.binarySearch( [] a,item key)

            //a - 要搜索的数组

fromIndex - 要搜索的第一个元素的索引(包括)
toIndex - 要搜索的最后一个元素的索引(不包括)
key - 要搜索的值

    Arrays.binarySearch( [] a,int fromIndex,int toIndex,item key)


     //将指定数组的指定范围复制到一个新数组。该范围的初始索引 (from) 必须位于 0 和 original.length(包括)之间。original[from] 处的值放入副本的初始元素中(        除非 from == original.length 或 from == to)。原数组中后续元素的值放入副本的后续元素。该范围的最后索引 (to) (必须大于等于 from)可以大  于 original.length,在这种情况下,false 被放入索引大于等于 original.length - from 的副本的所有元素中。返回数组的长度为 to - from

   Arrays.copyOfRange([] original,int from,int to);


  //基于指定数组的内容返回哈希码。对于任何两个满足 Arrays.equals(a, b) 的 boolean 型数组 a 和 b,也可以说 Arrays.hashCode(a) ==           Arrays.hashCode(b)

  此方法返回的值与在 List 上调用 hashCode 方法获得的值相同,该 List 包含以相同顺序表示 a 数组元素的 Boolean 实例的序列。如果 a 为 null,则此方法返回 0。

     Arrays.hashCode([] a);


    



  

在 Java 中,`Arrays` 是一个用于操作数组的实用工具类,位于 `java.util` 包中。该类提供了许多静态方法来对数组进行常见的操作,例如排序、搜索、填充和转换等。以下是一些常用的 `Arrays` 类方法及其功能描述。 ### 1. 数组内容转换为字符串表示 - **`toString(array)`** 将数组的内容转换为可读性较好的字符串形式输出。支持多种类型的数组,包括基本类型和对象数组。 ```java int[] array = {1, 2, 3}; System.out.println(Arrays.toString(array)); // 输出 [1, 2, 3] ``` [^2] ### 2. 复制数组的一部分 - **`copyOfRange(array, fromIndex, toIndex)`** 返回指定范围内的数组副本(从 `fromIndex` 到 `toIndex - 1`)。 ```java int[] array = {1, 2, 3, 4, 5}; int[] copy = Arrays.copyOfRange(array, 2, 4); // 副本包含元素 {3, 4} System.out.println(Arrays.toString(copy)); ``` [^1] ### 3. 对数组进行排序 - **`sort(array)`** 按升序排列数组中的所有元素。 ```java int[] array = {5, 2, 9, 1}; Arrays.sort(array); // 排序后数组变为 {1, 2, 5, 9} ``` - **`sort(array, comparator)`** 对对象数组按自定义比较规则排序,可以通过传入 `Comparator` 实现。 ```java String[] names = {"Charlie", "Alice", "Bob"}; Arrays.sort(names, (a, b) -> a.compareTo(b)); // 升序排序 ``` [^5] ### 4. 填充数组 - **`fill(array, value)`** 使用指定值填充整个数组。 ```java int[] array = new int[5]; Arrays.fill(array, 7); // 所有元素变为 7 → {7, 7, 7, 7, 7} ``` - **`setAll(array, function)`** Java 8 引入的方法,使用函数式编程方式填充数组,每个元素通过给定的函数生成。 ```java int[] array = new int[10]; Arrays.setAll(array, i -> i * 10); // 元素依次为 0, 10, 20,...,90 System.out.println(Arrays.toString(array)); ``` [^3] ### 5. 查找数组中的元素位置 - **`binarySearch(array, key)`** 在已排序的数组中查找指定元素的索引,返回其位置;如果未找到,则返回负数。 ```java int[] array = {1, 3, 5, 7, 9}; int index = Arrays.binarySearch(array, 5); // 返回 2 ``` - **`binarySearch(array, fromIndex, toIndex, key)`** 在数组的指定范围内查找元素的位置。 ```java int index = Arrays.binarySearch(array, 1, 4, 7); // 范围 [3,5,7] 中查找 7 的位置 ``` ### 6. 数组比较 - **`equals(array1, array2)`** 判断两个数组是否相等(即长度相同且对应元素相同)。 ```java int[] array1 = {1, 2, 3}; int[] array2 = {1, 2, 3}; boolean result = Arrays.equals(array1, array2); // true ``` ### 7. 并行操作与流处理 - **`parallelSort(array)`** 对大型数组进行并行排序,提高性能。 ```java int[] largeArray = ...; // 大型数组 Arrays.parallelSort(largeArray); ``` - **`stream(array)`** 将数组转换为一个流(Stream),便于使用 Java 8 的流式 API 进行处理。 ```java int[] array = {1, 2, 3, 4, 5}; Arrays.stream(array).forEach(System.out::println); ``` ### 8. 创建不可变列表 - **`asList(elements...)`** 将数组转换为固定大小的 `List`,但不能添加或删除元素。 ```java Integer[] array = {1, 2, 3}; List<Integer> list = Arrays.asList(array); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值