Java Arrays.copyOfRange()方法

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

在本教程中,我们将在 Java 中学习Arrays类中的copyOfRange()方法。这个方法非常类似于copyOf()方法,但是它在范围方面也提供了更大的灵活性,即它接收现有数组的起始索引和结束索引来创建一个新数组。

句法

public static datatype[] copyOfRange(datatype[] existing_array, int start_index, int end_index)

这个方法将接收到一个existing_arraystart_index ,从中我们要创建一个新的数组,start_index 从中我们将复制数组,end_index 向上我们将复制数组,最后它将返回一个新创建的数组。

copyRange()方法重载方法列表

此表包含copyOfRange()方法的所有重载变体。

方法 描述
静态布尔[]copy for range(布尔[] original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态字节[] copyOfRange(字节[] original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 char[]copy ofrange(char[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 double【】copy for range(double【】original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 float[]copyorfrange(float[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 int[]copy for range(int[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 long[]copy ofrange(long[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态 short[]copy for range(short[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静态T[]copy for range(T[]original,int from,int to) 此方法将指定数组的指定范围复制到新数组中。
静< T,?U>T[]copy for range(U[]original,int from,int to,Class <?扩展[T]>新类型) 此方法将指定数组的指定范围复制到新数组中。

enlightened 在通过start_index 时不应该小于 0,反之end_index 可以超过阵长。在这种情况下,我们传递的end_index 大于现有数组的长度,那么所有这些元素都将被指定为零(0)。

结束索引小于数组长度时的copyOfRange()示例

在本例中,我们使用copyOfRange()方法从现有数组 arr 创建new_array 。在我们的例子中,arr 将包含从索引 3 到 11 的所有元素

import java.util.Arrays; 
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int arr[] = {17, 32, 44, 99, 29, 22, 5, 18, 51, 66, 12, 14, 57}; 
        int[] new_array = Arrays.copyOfRange(arr, 3, 11); 
        for (int num : new_array) 
            System.out.print(num + " "); 

    } 
}

99 29 22 5 18 51 66 12

结束索引超过数组长度时的copyOfRange()示例

在下面给出的例子中,结束索引被作为 10 传递,但是在现有数组中最大可能的索引是 5 ,所以所有后面的索引元素将被指定为零(0)。

import java.util.Arrays; 
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int arr[] = {17, 32, 44, 99, 29, 22}; 
        int[] new_array = Arrays.copyOfRange(arr, 3, 10); 
        for (int num : new_array) 
            System.out.print(num + " "); 

    } 
}

99 29 22 0 0 0 0

对象数组的copyOfRange()示例

在下面给出的例子中,我们创建了一个Student 类的对象数组,然后使用 copyRangeOf()方法创建了一个新的数组new_array。这个例子说明了我们如何使用这个方法来创建一个对象数组。

import java.util.Arrays;
class Student
{
    String stud_name;
    int roll_no;
    Student(String stud_name, int roll_no)
    {
        this.stud_name = stud_name;
        this.roll_no = roll_no;
    }
}
class StudyTonight { 
    public static void main(String args[]) 
    { 
        Student[] arr = new Student[4];        
        arr[0] = new Student("ABC",123);
        arr[1] = new Student("DEF",456);
        arr[2] = new Student("GHI",963);        
        Student[] new_arr = Arrays.copyOfRange(arr,0,3);
        for(Student obj:new_arr){
            System.out.println("Name: "+obj.stud_name+" Roll No: "+obj.roll_no);
        }
    } 
}

名称:ABC 辊号:123 名称:DEF 辊号:456 名称:GHI 辊号:963

copyRange()方法所有重载方法示例

在下面给出的示例中,我们在一个地方实现了所有重载的方法示例。这里给出了不同数据类型的数组,我们正在使用copyOfRange()方法从现有数组创建特定范围的新数组。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        //Example of static boolean[]    copyOfRange(boolean[] original, int from, int to)
        boolean[] array1={true, false, true, false, false, true};
        boolean[] new_arr1=Arrays.copyOfRange(array1, 0, 6);
        System.out.println("New Boolean Array: "+Arrays.toString(new_arr1));

        //Example of static byte[]    copyOfRange(byte[] original, int from, int to)
        byte[] array2={4, 1, 8, 2, 2, 3, 16, 4, 4};
        byte[] new_arr2=Arrays.copyOfRange(array2, 0, 9);
        System.out.println(Arrays.toString(new_arr2));

        //Example of static char[]    copyOfRange(char[] original, int from, int to)
        char[] array3={'a', 'e', 'i', 'o', 'u'};
        char[] new_arr3=Arrays.copyOfRange(array3, 0, 5);
        System.out.println(Arrays.toString(new_arr3));

        //Example of static double[]    copyOfRange(double[] original, int from, int to)
        double[] array4={12, 3, 17, 5, 8, 17, 2, 37};
        double[] new_arr4=Arrays.copyOfRange(array4, 0, 8);
        System.out.println(Arrays.toString(new_arr4));

        //Example of static float[]    copyOfRange(float[] original, int from, int to)
        float[] array5={4.12f, 7.3f, 8.17f, 1.5f, 7.8f, 4.17f, 3.2f, 6.37f};
        float[] new_arr5=Arrays.copyOfRange(array5, 0, 8);
        System.out.println(Arrays.toString(new_arr5));

        //Example of static int[]    copyOfRange(int[] original, int from, int to)
        int[] array6 ={5, 6, 7, 10, 17};        
        int[] new_arr6=Arrays.copyOfRange(array6, 0,5);
        System.out.println(Arrays.toString(new_arr6));

        //Example of static long[]    copyOfRange(long[] original, int from, int to)
        long[] array7={4,54,56,584,51,84,5,28,33,9};
        long[] new_arr7=Arrays.copyOfRange(array7, 0,10);
        System.out.println(Arrays.toString(new_arr7));

        //Example of static short[]    copyOfRange(short[] original, int from, int to)
        short[] array8={10, 8, 6, 4, 2, 0};
        short[] new_arr8=Arrays.copyOfRange(array8, 0,6);
        System.out.println(Arrays.toString(new_arr8));
    }
}

新布尔数组:【真、假、真、假、真】 【4、1、8、2、2、3、16、4、4】 【a、e、I、o、u】 【12.0、3.0、17.0、5.0、8.0、17.0、2.0、37.0】 【4.12、7.3、8.17、1.5、7.8、4.17

结论:

在本教程中,我们学习了如何使用 copyOfRange() 方法从现有数组创建新数组。该方法与copyOf()方法相同,但接受开始索引和结束索引来复制切片数组。