Arrays工具类的常见方法总结

  Arrays 是 Java 标准库中的一个实用工具类,它包含了许多静态方法,用于操作数组。以下是一些 Arrays 工具类中常见方法的总结:

目录

1:Arrays.asList( )

1.1作用

1.2参数

1.3返回值

1.4举例

1.5源代码解读

2:Arrays.binarySearch( )

2.1作用

2.2参数

2.3返回值

2.4举例

3:Arrays.copyOf( )

3.1作用

3.2参数

3.3返回值

3.4举例

4:Arrays.copyOfRange( )

4.1作用

4.2参数

4.3返回值

4.4举例

5:Arrays.fill( )

5.1作用

5.2参数

5.3返回值

5.4举例

6:Arrays.sort( )

6.1作用

6.2参数 

6.3返回值

6.4举例

7:Arrays.toString( )

7.1作用

7.2参数

7.3返回值

7.4举例


1:Arrays.asList( )

1.1作用

        Arrays.asList() 是 Java 中的一个静态方法,用于将一个数组或一组元素转换为一个固定大小的列表。

1.2参数

        这个方法接受一个可变参数列表(varargs),这意味着你可以传递任意数量的元素作为参数。这些元素可以是不同类型的,但返回的列表将包含所有传递的元素。

1.3返回值

        Arrays.asList()的返回值是一个收指定数组支持的固定大小的列表。

1.4举例

public class Example {
    public static void main(String[] args) {
        // 使用基本数据类型数组
        int[] intArray = {1, 2, 3, 4, 5};
        List<Integer> intList = Arrays.asList(intArray);
        System.out.println(intList); // 输出: [1, 2, 3, 4, 5]

        // 使用字符串数组
        String[] stringArray = {"a", "b", "c"};
        List<String> stringList = Arrays.asList(stringArray);
        System.out.println(stringList); // 输出: [a, b, c]

1.5源代码解读

        Arrays.asList() 的源代码实现实际上非常简单,因为它基于 Java 的泛型机制和一些内部类来实现。下面我将解释其源代码的主要部分,并解释它是如何将数组转换为列表的。

        首先,我们需要查看 Arrays 类中的 asList 方法。这个方法有几个重载版本,分别用于处理不同类型的数组。但不论哪种类型,它们的核心实现逻辑是相似的。

        以下是 Arrays.asList() 方法的一个泛型版本的简化源代码示例:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

        这个方法的签名表明它接受可变数量的类型为 T 的参数,并返回一个 List<T> 类型的对象。

        然而,这个实现并不是直接返回一个 ArrayList,因为这样会允许对返回的列表进行修改,而 Arrays.asList() 返回的列表应该是不可修改的。因此,实际的实现使用了 Arrays.ArrayList,这是一个私有的静态内部类,继承自 AbstractList 并重写了 getsize 和其他一些方法。

2:Arrays.binarySearch( )

2.1作用

        Arrays.binarySearch()的方法,进行查找:由于该方法是基于二分查找法实现,数组必须处于有序状态。所以,需要先对数组进行排序,然后再通过Arrays.binarySearch()进行查找。

2.2参数

  1. Object[] a - 要搜索的已排序数组。
  2. Object key - 要搜索的元素。

2.3返回值

        这个方法返回指定元素在数组中的索引,如果数组不包含该元素,则返回负值。 

2.4举例

public class Main {
    public static void main(String[] args) {
       	int[] array = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
		int target = 36; // 目标元素
		
		// 先排序
		Arrays.sort(array);
		
		// 再查找
		int index = Arrays.binarySearch(array, target);
        
		System.out.printf("目标值%d在数组中的下标为:%d",target,index);
    }
}

3:Arrays.copyOf( )

3.1作用

        Arrays.copyOf()的作用是实现数组的复制,返回复制后的数组。

3.2参数

  1. original:这是你想要复制的原始数组。

  2. newLength:这是你想要创建的新数组的长度。

3.3返回值

        这个方法返回一个新的数组,它是原始数组的一个副本,并且长度由 newLength 参数指定。如果 newLength 大于原始数组的长度,则新数组中的其余条目将被填充为原始数组相应数据类型的默认值(例如,对于对象数组,这将是 null;对于 int 数组,这将是 0)。如果 newLength 小于原始数组的长度,则返回的数组将被截断到指定的长度。

3.4举例

public class CopyOfExample {
    public static void main(String[] args) {
        // 原始数组
        int[] originalArray = {1, 2, 3, 4, 5};

        // 创建一个新数组,长度为原始数组长度加1
        int[] newArray = Arrays.copyOf(originalArray, originalArray.length + 1);

        // 输出新数组
        System.out.println(Arrays.toString(newArray));
        // 输出:[1, 2, 3, 4, 5, 0]

4:Arrays.copyOfRange( )

4.1作用

        Arrays.copyOfRange( )这个方法的作用是从原始数组中复制一个指定范围的子数组,并返回这个新创建的子数组。

4.2参数

  1. original:这是源数组,即你想要从中复制元素的数组。

  2. from:这是子数组的起始索引(包含)。

  3. to:这是子数组的结束索引(不包含)。

4.3返回值

        方法返回包含复制元素的新数组。原始数组在调用 copyOfRange() 方法后不会被修改。

4.4举例

public class CopyOfRangeExample {
    public static void main(String[] args) {
        // 原始数组
        int[] originalArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

        // 复制从索引 2 到索引 6(不包含)的子数组
        int[] subArray = Arrays.copyOfRange(originalArray, 2, 6);

        // 输出子数组
        System.out.println(Arrays.toString(subArray));
        // 输出:[2, 3, 4, 5]
    }
}

5:Arrays.fill( )

5.1作用

        Arrays.fill()用于快速填充数组,但是只适用于一维数组。

5.2参数

  1. 第一个参数 (T[] a):

    • 这是一个数组,你想要填充的目标数组。这个数组可以是任何类型(如 int[]double[]Object[] 等)。
  2. 第二个参数 (int fromIndex):

    • 这是你想要开始填充的起始索引(包含)。这个参数是可选的,如果省略,那么填充将从数组的第一个元素开始(索引为 0)。
  3. 第三个参数 (int toIndex):

    • 这是你想要结束填充的结束索引(不包含)。这个参数也是可选的,如果省略,那么填充将一直进行到数组的最后一个元素。
  4. 第四个参数 (T val):

    • 这是你想要用来填充数组的值。这个值的类型必须与目标数组的元素类型相匹配。

5.3返回值

        Arrays.fill()没有返回值。

5.4举例

public class FillExample {
    public static void main(String[] args) {
        int[] arr = new int[5];
        Arrays.fill(arr, 7);
        System.out.println(Arrays.toString(arr)); // 输出:[7, 7, 7, 7, 7]
    }
}

6:Arrays.sort( )

6.1作用

        Arrays.sort()是Java语言中的数组排序函数,用于对数组进行排序。

6.2参数

        这个方法接受一个数组作为参数,并且根据数组的元素类型有不同的重载版本。下面列出了 Arrays.sort() 方法的一些常见参数和用法:

对于原始类型数组:

  1. int[] a - 对整型数组进行排序。
  2. long[] a - 对长整型数组进行排序。
  3. short[] a - 对短整型数组进行排序。
  4. double[] a - 对双精度浮点数数组进行排序。
  5. float[] a - 对单精度浮点数数组进行排序。
  6. char[] a - 对字符数组进行排序。
  7. byte[] a - 对字节型数组进行排序。

对于对象类型数组:

  1. T[] a - 对任意类型的对象数组进行排序。在这种情况下,数组的元素必须实现 Comparable 接口,这样 Arrays.sort() 才能知道如何比较它们。

6.3返回值

        Arrays.sort()的返回值为void

6.4举例

public class ArraysSortExample {
    public static void main(String[] args) {
        // 整数数组
        int[] intArray = {9, 5, 3, 7, 2, 8, 1, 6, 4};
        Arrays.sort(intArray);
        System.out.println(Arrays.toString(intArray)); // 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

7:Arrays.toString( )

7.1作用

Arrays.toString()用于将数组的内容转换为一个字符串表示形式。

7.2参数

Arrays.toString() 的参数是一个数组,可以是任何类型的数组,包括基本类型数组(如 int[]double[]char[] 等)和对象类型数组(如 String[], 或者自定义对象的数组)。

7.3返回值

Arrays.toString() 方法的返回值是一个字符串,该字符串表示了传入数组的内容。

7.4举例

public class ArraysToStringExample {
    public static void main(String[] args) {
        // 基本类型数组
        int[] intArray = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(intArray)); // 输出:[1, 2, 3, 4, 5]

        // 对象类型数组(例如 String)
        String[] stringArray = {"apple", "banana", "cherry"};
        System.out.println(Arrays.toString(stringArray)); // 输出:[apple, banana, cherry]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值