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

public static int[] copyOfRange(int[] original_array, int from_index, int to_index)

**Parameters:

**Return Type:

**Exceptions:

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