Java Arrays

原文:https://www.studytonight.com/java-util/java-arrays-class

在本教程中,我们将从 Java 集合框架中了解Arrays类。这个类属于java.util 包,提供了各种处理数组及其类型的方法。

该类提供了各种方法,如sort()binarySearch()equals()copyOf()fill()等,以高效地操纵数组。我们将在本教程后面单独讨论每种方法。让我们看看下面给出的表格,这个表格简短地描述了 Arrays 类的每个方法。这个类的所有方法都可以直接使用类名调用,即不需要创建对象。

|

方法

|

描述

| | 静态< T >列表< T >作为列表(T...a) | 此方法返回由指定数组支持的固定大小列表。 | | 静态 int binarySearch(字节[] a,字节键) | 使用二分搜索法算法在指定的字节数组中搜索指定的值。 | | 静< T 延伸可比<?超 T>T5】int compare(T[]a,T[] b) | 在可比较的元素中,按字典顺序比较两个对象数组。 | | 静态< T > int compare(T[] a,T[] b,Comparator<?超级 T > cmp) | 使用指定的Comparator按字典顺序比较两个对象数组。 | | 静态 int compareUnsigned?(短[] a,短[] b) | 按字典顺序比较两个短数组,在数字上将元素视为无符号的。 | | 静态< T > T[]副本(T[]原件,int newLength) | 复制指定的数组,用空值截断或填充(如有必要),使副本具有指定的长度。 | | 静< T,?U > T【】复制(U【】原文,int newLength,Class <?扩展[T]>新类型) | 复制指定的数组,用空值截断或填充(如有必要),使副本具有指定的长度。 | | 静态T[]copy for range(T[]original,int from,int to) | 将指定数组的指定范围复制到新数组中。 | | 静< T,?U>T[]copy for range(U[]original,int from,int to,Class <?扩展[T]>新类型) | 将指定数组的指定范围复制到新数组中。 | | 静态布尔深度等于(对象[] a1,对象[] a2) | 如果两个指定的数组深度相等,则此方法返回 true。 | | 静态 int deepHashCode(Object[] a) | 此方法基于指定数组的“深层内容”返回哈希代码。 | | 静态字符串深度字符串(对象[] a) | 此方法返回指定数组的“深层内容”的字符串表示形式。 | | 静态< T >布尔等(T[] a,int aFromIndex,int aToIndex,T[] b,int bfromindex,int bToIndex,Comparator<?super t>【CMP】 | 如果指定范围内的两个指定对象数组彼此相等,则此方法返回 true。 | | 静态< T >布尔等于(T[] a,T[] a2,Comparator<?超级 T > cmp) | 如果两个指定的对象数组彼此相等,则此方法返回 true。 | | 静态空隙填充(对象[] a,int fromIndex,int toIndex,Object val) | 将指定的对象引用分配给指定对象数组的指定范围的每个元素。 | | 静态空隙填充(对象[] a,对象值) | 将指定的对象引用分配给指定对象数组的每个元素。 | | 静态 int hashCode(Object[] a) | 此方法基于指定数组的内容返回哈希代码。 | | 静态< T >内部不匹配?(T[] a、int aFromIndex、int aToIndex、T[] b、int bfromindex、int bToIndex、Comparator<?super t>【CMP】 | 查找并返回指定范围内两个对象数组之间第一个不匹配的相对索引,如果没有找到不匹配,则返回-1。 | | 静态< T > int 不匹配?(T[] a,T[] b,比较者<?超级 T > cmp) | 查找并返回两个对象数组之间第一个不匹配的索引,如果没有发现不匹配,则返回-1。 | | 静< T >虚空平行参考系?(T[]数组,int fromIndex,int toIndex,BinaryOperator < T > op) | 对给定的数组子范围执行 parallelPrefix(对象[],BinaryOperator)。 | | 静< T >虚空平行参考系?(T[]数组,双处理器< T > op) | 使用提供的函数并行累积给定数组中的每个元素。 | | 静< T >空平行高?(T[]数组,IntFunction <?延伸 T >发电机) | 使用提供的生成器函数计算每个元素,并行设置指定数组的所有元素。 | | 静止< T >虚空平行?(T[] a,int fromIndex,int toIndex,Comparator<?超级 T > cmp) | 根据指定Comparator引发的顺序,对指定对象数组的指定范围进行排序。 | | 静< T >虚空平行?(比较者<?超级 T > cmp) | 根据指定Comparator引发的顺序对指定的对象数组进行排序。 | | 静< T >虚空套界?(T[]数组,IntFunction <?延伸 T >发电机) | 使用提供的生成器函数计算每个元素,设置指定数组的所有元素。 | | 静态< T >看出来了吗?(T[] a、int fromIndex、int toIndex、Comparator<?super t>【c】 | 根据指定Comparator引发的顺序,对指定对象数组的指定范围进行排序。 | | 静< T >虚空排序?(比较者<?超级 T > c) | 根据指定Comparator引发的顺序对指定的对象数组进行排序。 | | 静态< T >分割器< T >分割器?(T[]数组) | 此方法返回一个包含所有指定数组的拆分器。 | | 静态< T >分割器< T >分割器?(T[]数组,int startInclusive,int endExclusive) | 此方法返回一个 Spliterator,它覆盖指定数组的指定范围。 | | 静< T >流< T >流?(T[]数组) | 此方法返回一个以指定数组为源的顺序流。 | | 静< T >流< T >流?(T[]数组,int startInclusive,int endExclusive) | 此方法返回一个以指定数组的指定范围为源的顺序流。 | | 静态字符串 toString?(对象[] a) |

| This method returns the string representation of the specified array contents. |

|

排序数组示例

本示例按升序对给定数组进行排序。使用Arrays.sort()方法,无论我们传递什么样的数组,它都将进行排序,并以排序的方式输出。在下面的代码中,您可以看到数组元素不是按字母顺序排序的,但是在输出中,所有的数组元素都是按排序方式排序的。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        String array[]={"elephant", "dog", "apple", "cat", "bat"}; 
        Arrays.sort(array);
        for (String str: array)
        {
            System.out.println(str);
        }
    }
}

苹果 蝙蝠 猫 狗 大象

示例:在数组中搜索

本示例使用二分搜索法搜索数组中给定数字的索引。我们将传递两个参数,即数组和关键字来搜索,它将返回关键字的索引。

enlightened二分搜索法只在排序数组上工作,所以在调用这个方法的时候要确保你已经在方法中传递了一个排序数组作为参数。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        int array[]={2,6,7,8,13,19,27,55,80}; 
        int key = 19;
        System.out.print(key+" found at index: "+Arrays.binarySearch(array,key));
    }
}

19 在索引:5 处找到

示例比较两个数组

本示例检查给定数组是否相等。我们在这个方法中传递两个数组,它将返回一个布尔值,相等数组为真,不等数组为假。我们可以在给定的数组中看到两个数组不相等,因此这个方法返回了一个错误的值。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        String array1[]={"Bangalore","Delhi", "Mumbai", "Kolkata"}; 
        String array2[]={"Noida","Hyderabad", "Chennai", "Chandigarh"}; 
        if(Arrays.equals(array1, array2))
        {
            System.out.println("Arrays are equal");
        }
        else
        {
            System.out.println("Arrays are not equal");
        }
    }
}

数组不相等

示例:创建数组副本

本示例将给定数组的所有数据复制到另一个数组。这个方法接受两个参数一个是原始数组,另一个是我们想要复制原始数组数据的数组。在下面给出的代码中,您可以看到当我们打印数组的两个元素时,它们打印的是相同的,这意味着它们都包含相同的元素。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        String array1[]={"Bangalore","Delhi", "Mumbai", "Kolkata"}; 
        String array2[]=Arrays.copyOf(array1, 4);

        System.out.println("Elements of Array 1");
        for(String str:array1)
        {
            System.out.print(str+" ");
        }

        System.out.println("\n");

        System.out.println("Elements of Array 2");
        for(String str:array2)
        {
            System.out.print(str+" ");
        }

    }
}

数组 1 的元素 班加罗尔德里孟买加尔各答 T3】数组 2 的元素 班加罗尔德里孟买加尔各答

示例:用特定值填充数组

当给所有数组元素分配相同的值时,这个 fill()方法非常有用,因为它给所有数组元素分配相同的值,而不管数组的大小。您可以在下面的代码中看到,我们为所有数组元素赋值 15,在输出中,所有元素都是 15。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        int array[]={1, 3, 4, 8, 2, 34}; 
        Arrays.fill(array, 15);        
        for(int arr:array)
        {
            System.out.print(arr+" ");
        }        
    }
}

15 15 15 15 15 15

示例:从数组获取列表

此方法从数组中返回固定大小的列表。在下面给出的代码片段中,我们有一个字符串数组,并使用Arrays.asList() 方法将该方法转换为字符串列表。

import java.util.Arrays;
import java.util.List;
public class StudyTonight 
{
    public static void main(String[] args)  
    {
        String arr[]= new String[] { "Java", "C", "C++", "Python" };
        List<String> list = Arrays.asList(arr);
        System.out.println("List: " + list);
    }
}

列表:【Java、C、C++、Python】

结论

为了操作数组,我们通常手动进行排序和搜索,但是对于大型数组,这些方法非常有效。 sort()fill()copyOf()equals()是编程界经常使用的方法,这个类让程序员很容易掌握这些东西。