Arrays.copyOfRange() in Java with Examples (original) (raw)
Last Updated : 11 Nov, 2024
**Arrays copyOfRange()
method is used to create a new array by copying a specified range of elements from an existing array. It provides a way to copy a subset of elements between two indices by creating a new array of the same type.
Below is a simple example that uses Arrays.copyOfRange()
method to copy a specified range of elements from an existing array.
Java `
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Original array
int[] arr1 = {10, 20, 30, 40,};
// Copy elements from index 1 to 3 (exclusive)
int[] arr2 = Arrays.copyOfRange(arr1, 1, 3);
System.out.println("Copied Array: " + Arrays.toString(arr2));
}
}
`
Output
Copied Array: [20, 30]
Table of Content
- Syntax of Arrays.copyOfRange() method
- Examples of Arrays.copyOfRange() in Java
- copyOf vs copyOfRange
Syntax of Arrays.copyOfRange() method
public static int[] copyOfRange(int[] original_array, int from_index, int to_index)
**Parameters:
- **original_array : Array to be copied from.
- **from_index : Starting index (inclusive) of range to be copied.
- **to_end : The final index (exclusive) of the range to be copied.
**Return Type:
- Returns a new array containing elements from the original array (length will be to_index to from_index).
**Exceptions:
- **ArrayIndexOutOfBoundsException : This is thrown if the initial index is out of range of original array.
- **IllegalArgumentException : This is thrown if from_index > to_index.
- **NullPointerException : This is thrown if the original array is null.
Examples of Arrays.copyOfRange() in Java
Now, let's understand the working of **Arrays.copyOfRange() method with two examples.
Using Arrays.copyOfRange()
with Integer Array
This method efficiently copies a specified range of elements from an array. This automatically handles out-of-range indices by filling missing elements with default values i.e. 0 for integers.
Java `
// Java program to illustrate copyOfRange() method import java.util.Arrays;
class GFG {
public static void main(String args[]) {
int arr1[] = { 1, 2, 3, 4, 5, 6, 7 };
// Copying elements within range
int[] arr2 = Arrays.copyOfRange(arr1, 2, 6);
for (int i : arr2)
System.out.print(i + " ");
System.out.println();
// Copying with out-of-range index (fills with zeroes)
int[] arr3 = Arrays.copyOfRange(arr1, 4, arr1.length + 3);
for (int i : arr3)
System.out.print(i + " ");
// Uncomment to see exceptions:
// IllegalArgumentException
// int[] arr4 = Arrays.copyOfRange(arr1, 5, 3);
// ArrayIndexOutOfBoundsException
// int[] arr5 = Arrays.copyOfRange(arr1, 10, arr1.length + 5);
}
}
`
Output
3 4 5 6
5 6 7 0 0 0
Using Arrays.copyOfRange()
with Custom Objects
This method enables easy way to copy a subset of custom objects by reducing the need of manual iteration. This also supports **type safety by specifying the target class type for object arrays.
Java `
// Java program to illustrate copyOfRange() method import java.util.Arrays;
class GFG {
static class Employee {
int i;
String n;
// constructor
public Employee(int i, String n)
{
this.i = i;
this.n = n;
}
// Override toString()
public String toString()
{
return i + " " + n;
}
}
public static void main(String args[]) {
Employee[] e = { new Employee(10, "geek1"),
new Employee(20, "geek2"),
new Employee(30, "geek3"),
new Employee(40, "geek4"),
new Employee(50, "geek5") };
// Copying range from index 3 to 5 in E array
Employee[] c = Arrays.copyOfRange(e, 3, 5);
for (Employee e1 : c)
System.out.print(e1.toString() + " ");
System.out.println();
// Copying Employee array to Object array
Object[] o = Arrays.copyOfRange(e, 1, 3, Object[].class);
// Uncommenting the following line would throw an error
// Number[] n = Arrays.copyOfRange(e, 1, 3, Number[].class);
for (Object e1 : o) {
System.out.print(e1.toString() + " ");
}
}
}
`
Output
40 geek4 50 geek5
20 geek2 30 geek3
**copyOf vs copyOfRange
- copyOf(): This method copies elements starting from the 0th index of the original array, and we need to specify the new length of the array (number of elements to copy).
copyOfRange()
: This method copies a specific range of elements from the original array, defined by a start index (inclusive) and an end index (exclusive).