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_array
和start_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,?U>T[]copy for range(U[]original,int from,int to,Class <?扩展[T]>新类型) | 此方法将指定数组的指定范围复制到新数组中。 |
在通过
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()
方法相同,但接受开始索引和结束索引来复制切片数组。