Java中的Arrays类

Java中的Arrays类

Arrays 类位于 java.util包 中,是 Java Collection Framework 的一部分。此类提供静态方法来动态创建和访问 Java数组 。它只包含静态方法和Object类的方法。此类的方法可以通过类名本身使用。

类层次结构如下所示:

java.lang.Object
 ↳ java.util.Arrays

Geek,现在您一定会想知道既然我们能够声明、初始化和执行有关数组的操作,为什么我们需要java Arrays类。虽然答案在于此类的方法,我们将进一步讨论这些方法,因为实际上这些函数有助于程序员拓展数组的范围,比如经常会使用 循环 在数组上执行一些任务,例如:

  • 使用特定值填充数组。
  • 对Arrays进行排序。
  • 在Arrays中搜索。
  • 等等。

在此,Arrays类提供了几个静态方法,可以直接使用这些方法来执行这些任务,而无需使用循环,因此使我们的代码更加简短和优化。

语法: 类声明

public class Arrays
    extends Object

语法: 使用Arrays

Arrays.<function name>;

Java数组类中的方法

java.util包的Arrays类包含几个静态方法,可用于填充、排序、搜索等数组。现在让我们以表格格式讨论此类的一些方法,如下所示:

方法 执行的操作
asList() 返回一个由指定数组支持的固定大小列表。
binarySearch() 使用二分查找算法在数组中查找指定的元素。
binarySearch(array, fromIndex, toIndex, key, Comparator) 使用二分查找算法搜索指定数组的一定范围内的指定对象。
compare(array 1, array 2) 按字典顺序比较两个作为参数传递的数组。
copyOf(originalArray, newLength) 复制指定的数组,并截断或填充默认值(如果需要),使得副本具有指定的长度。
copyOfRange(originalArray, fromIndex, endIndex) 将指定数组的指定范围复制到一个新的数组中。
deepEquals(Object[] a1, Object[] a2) 如果两个指定的数组彼此深度相等,则返回true。
deepHashCode(Object[] a) 基于指定数组的“深度内容”返回哈希码。
deepToString(Object[] a) 返回指定数组的“深度内容”的字符串表示形式。
equals(array1, array2) 检查两个数组是否相等。
fill(originalArray, fillValue) 将此填充值分配给此数组的每个索引。
hashCode(originalArray) 返回此数组实例的整数哈希码。
mismatch(array1, array2) 查找并返回两个指定数组之间第一个不匹配元素的索引。
parallelPrefix(originalArray, fromIndex, endIndex, functionalOperator) 使用指定的函数运算符对数组的给定范围执行parallelPrefix。
parallelPrefix(originalArray, operator) 使用指定的函数运算符执行完整数组的parallelPrefix。
parallelSetAll(originalArray, functionalGenerator) 使用提供的生成器函数并行设置此数组的所有元素。
parallelSort(originalArray) 使用并行排序对指定的数组进行排序。
setAll(originalArray, functionalGenerator) 使用提供的生成器函数设置指定数组的所有元素。
sort(originalArray) 将整个数组按升序排序。
sort(originalArray, fromIndex, endIndex) 将指定范围的数组按升序排序。
sort(T[] a, int fromIndex, int toIndex, Comparator< super T> c) 根据指定比较器引起的顺序,对指定数组对象的指定范围进行排序。 | sort(T[] a, Comparator< super T> c) | 根据指定比较器引起的顺序,对指定的对象数组进行排序。
spliterator(originalArray) 返回一个涵盖指定数组所有元素的Spliterator。
spliterator(originalArray, fromIndex, endIndex) 返回一个Spliterator,它涵盖指定数组的一定范围。

实现:

示例 1: asList() 方法

// Java程序演示Arrays类
// 通过asList()方法
  
// 导入java.util包中的Arrays工具类 
import java.util.Arrays;
  
// 主类 
class GFG {
    
    // 主驱动程序   
    public static void main(String[] args)
    {
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 将元素转换为列表
        System.out.println("整数数组转为列表: "
                           + Arrays.asList(intArr));
    }
}

输出

整数数组转为列表: [[I@2f4d3709]

示例 2: binarySearch() 方法

该方法使用二分查找算法在数组中搜索指定的元素。

// Java程序演示Arrays类
// 通过binarySearch()方法
  
// 导入java.util包中的Arrays工具类
import java.util.Arrays;
  
// 主类 
public class GFG {
  
    // 主驱动程序   
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        Arrays.sort(intArr);
  
        int intKey = 22;
  
        // 打印关键字和相应的索引
        System.out.println(
            intKey + "在索引处发现 = "
            + Arrays.binarySearch(intArr, intKey));
    }
}

输出

22在索引处发现 = 3

示例 3: binarySearch(array, fromIndex, toIndex, key, Comparator) 方法

该方法使用二分查找算法在指定的数组范围内搜索指定的对象。

// Java程序演示Arrays.binarySearch()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        Arrays.sort(intArr);
  
        int intKey = 22;
  
        System.out.println(
            intKey
            + "在索引处发现 = "
            + Arrays
                  .binarySearch(intArr, 1, 3, intKey));
    }
}

输出

22在索引处发现 = -4

示例 4: compare(array 1, array 2) 方法

// Java程序演示Arrays.compare()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 获取第二个数组
        int intArr1[] = { 10, 15, 22 };
  
        // 比较两个数组
        System.out.println("整数数组的比较结果: "
                           + Arrays.compare(intArr, intArr1));
    }
}

输出

整数数组的比较结果: 1

示例 5: compareUnsigned(array 1, array 2)方法

// Java程序演示
// Arrays.compareUnsigned()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取第一个数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 获取第二个数组
        int intArr1[] = { 10, 15, 22 };
  
        // 比较两个数组
        System.out.println("Integer Arrays on comparison: "
                           + Arrays.compareUnsigned(intArr, intArr1));
    }
}

输出

Integer Arrays on comparison: 1

示例6: copyOf(originalArray, newLength)方法

// Java程序演示
// Arrays.copyOf()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 打印数组元素
        System.out.println("Integer Array: "
                           + Arrays.toString(intArr));
  
        System.out.println("\nNew Arrays by copyOf:\n");
  
        System.out.println("Integer Array: "
                           + Arrays.toString(
                                 Arrays.copyOf(intArr, 10)));
    }
}

输出

Integer Array: [10, 20, 15, 22, 35]

New Arrays by copyOf:

Integer Array: [10, 20, 15, 22, 35, 0, 0, 0, 0, 0]

示例7: copyOfRange(originalArray, fromIndex, endIndex)方法

// Java程序演示
// Arrays.copyOfRange()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 打印数组元素
        System.out.println("Integer Array: "
                           + Arrays.toString(intArr));
  
        System.out.println("\nNew Arrays by copyOfRange:\n");
  
        // 将数组复制到新长度数组中
        System.out.println("Integer Array: "
                           + Arrays.toString(
                                 Arrays.copyOfRange(intArr, 1, 3)));
    }
}

输出

Integer Array: [10, 20, 15, 22, 35]

New Arrays by copyOfRange:

Integer Array: [20, 15]

示例8: deepEquals(Object[] a1, Object[] a2)方法

// Java程序演示
// Arrays.deepEquals()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[][] = { { 10, 20, 15, 22, 35 } };
  
        // 获取第二个数组
        int intArr1[][] = { { 10, 15, 22 } };
  
        // 比较两个数组
        System.out.println("Integer Arrays on comparison: "
                           + Arrays.deepEquals(intArr, intArr1));
    }
}

输出

Integer Arrays on comparison: false

示例9: deepHashCode(Object[] a) 方法

//Java程序演示
//Arrays.deepHashCode()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        //获取数组
        int intArr[][] = {{10, 20, 15, 22, 35}};
  
        //获取数组的深度哈希码
        System.out.println("整型数组: "
                           + Arrays.deepHashCode(intArr));
    }
}

输出结果

整型数组: 38475344

Example 10: deepToString(Object[] a) 方法

//Java程序演示
//Arrays.deepToString()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        //获取数组
        int intArr[][] = {{10, 20, 15, 22, 35}};
  
        //获取数组的深度字符串
        System.out.println("整型数组: "
                           + Arrays.deepToString(intArr));
    }
}

输出结果

整型数组: [[10, 20, 15, 22, 35]]

Example 11: equals(array1, array2) 方法

//Java程序演示
//Arrays.equals()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        //获取数组
        int intArr[] = {10, 20, 15, 22, 35};
  
        //获取第二个数组
        int intArr1[] = {10, 15, 22};
  
        //比较两个数组
        System.out.println("整型数组比较: "
                           + Arrays.equals(intArr, intArr1));
    }
}

输出结果

整型数组比较: false

Example 12: fill(originalArray, fillValue) 方法

//Java程序演示
//Arrays.fill()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        //获取数组
        int intArr[] = {10, 20, 15, 22, 35};
  
        int intKey = 22;
  
        Arrays.fill(intArr, intKey);
  
        //填充数组
        System.out.println("整型数组填充: "
                           + Arrays.toString(intArr));
    }
}

输出结果

整型数组填充: [22, 22, 22, 22, 22]

Example 13: hashCode(originalArray) 方法

//Java程序演示
//Arrays.hashCode()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        //获取数组
        int intArr[] = {10, 20, 15, 22, 35};
  
        //获取数组的哈希码
        System.out.println("整型数组: "
                           + Arrays.hashCode(intArr));
    }
}

输出结果

整型数组: 38475313

示例 14:

mismatch(array1, array2) 方法

// Java程序演示
// Arrays.sort()方法

import java.util.Arrays;
import java.util.Comparator;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        String[] strArr = { "A", "B", "C", "D", "E" };
  
        // 指定比较器来排序数组
        Arrays.sort(strArr, 1, 3, new myComparator());
  
        System.out.println("String Array: "
                           + Arrays.toString(strArr));
    }
}
  
// 为比较元素创建自定义比较器
class myComparator implements Comparator {
    public int compare(String a, String b)
    {
        return b.compareTo(a);
    }
}

输出

String Array: [A, C, B, D, E]
// Java程序演示比较器接口的工作
import java.util.*;
import java.lang.*;
import java.io.*;

// 表示学生的类。
class Student:
    int rollno;
    String name, address;

    // 构造函数
    public Student(int rollno, String name, String address){
        this.rollno = rollno;
        this.name = name;
        this.address = address;
    }

    // 标准输出学生的详细信息
    public String toString(){
        return this.rollno + " "
            + this.name + " "
            + this.address;
    }
}

class Sortbyroll implements Comparator {
    // 用于按升序排序的比较器
    public int compare(Student a, Student b){
        return a.rollno - b.rollno;
    }
}

// 驱动程序
class Main {
    public static void main(String[] args){
        Student[] arr = { new Student(111, "bbbb", "london"),
                          new Student(131, "aaaa", "nyc"),
                          new Student(121, "cccc", "jaipur") };

        System.out.println("Unsorted");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);

        Arrays.sort(arr, 1, 2, new Sortbyroll());

        System.out.println("\nSorted by rollno");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);
    }
}

输出

Unsorted
111 bbbb london
131 aaaa nyc
121 cccc jaipur

Sorted by rollno
111 bbbb london
131 aaaa nyc
121 cccc jaipur

示例19: sort(T[] a,Comparator super T> c)方法

// Java程序演示比较器接口的工作
import java.util.*;
import java.lang.*;
import java.io.*;

// 表示学生的类。
class Student {
    int rollno;
    String name, address;

    // 构造函数
    public Student(int rollno, String name, String address){
        this.rollno = rollno;
        this.name = name;
        this.address = address;
    }

    // 标准输出学生的详细信息
    public String toString(){
        return this.rollno + " "
            + this.name + " "
            + this.address;
    }
}

class Sortbyroll implements Comparator {

    // 用于按升序排序的比较器
    public int compare(Student a, Student b){
        return a.rollno - b.rollno;
    }
}

// 驱动程序
class Main {
    public static void main(String[] args){
        Student[] arr = { new Student(111, "bbbb", "london"),
                          new Student(131, "aaaa", "nyc"),
                          new Student(121, "cccc", "jaipur") };

        System.out.println("Unsorted");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);

        Arrays.sort(arr, new Sortbyroll());

        System.out.println("\nSorted by rollno");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);
    }
}

输出

Unsorted
111 bbbb london
131 aaaa nyc
121 cccc jaipur

Sorted by rollno
111 bbbb london
121 cccc jaipur
131 aaaa nyc

示例20: spliterator(originalArray)方法

// Java程序演示Arrays.spliterator()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 使用普通排序对数组进行排序
        System.out.println("整数数组: "
                           + Arrays.spliterator(intArr));
    }
}

输出

整数数组: java.util.Spliterators$IntArraySpliterator@4e50df2e

示例21: spliterator(originalArray, fromIndex, endIndex) 方法

// Java程序演示Arrays.spliterator()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 使用普通排序对数组进行排序
        System.out.println("整数数组: "
                           + Arrays.spliterator(intArr, 1, 3));
    }
}

输出

整数数组: java.util.Spliterators$IntArraySpliterator@4e50df2e

示例22: stream(originalArray) 方法

// Java程序演示Arrays.stream()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 从数组中获取流
        System.out.println("整数数组: "
                           + Arrays.stream(intArr));
    }
}

输出

整数数组: java.util.stream.IntPipeline$Head@7291c18f

示例23: toString(originalArray) 方法

// Java程序演示Arrays.toString()方法
  
import java.util.Arrays;
  
public class Main {
    public static void main(String[] args)
    {
  
        // 获取数组
        int intArr[] = { 10, 20, 15, 22, 35 };
  
        // 在一行中打印元素
        System.out.println("整数数组: "
                           + Arrays.toString(intArr));
    }
}

输出

整数数组: [10, 20, 15, 22, 35]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程