Java.util.Arrays.copyOfRange() en Java

Este método crea una copia de elementos, dentro de un rango específico de la array original.
Sintaxis: 
 

public static int[] copyOfRange(int[] original_array, int from_index, int to_index) 
  • array_original : Array de la que se copiará
  • from_index: índice inicial del rango que se va a copiar
  • to_end : índice final del rango que se va a copiar

Puntos importantes a recordar mientras se trabaja con este método: 

  1. El índice inicial, es decir (from_index) debe estar entre 0 y original_array.length
  2. El índice final, es decir (a_índice), puede ser mayor o igual que la longitud de la array original. En caso de que sea mayor que el Array original, se asignan 0 a la copia cuyo índice es mayor o igual que el original.length – from.
  3. La array de retorno tiene una longitud de será a-desde
  4. Es un método de la clase Arrays

Excepciones 

  • ArrayIndexOutOfBoundsException: esto se lanza si el índice inicial, es decir (from_index) 
    está fuera del rango de la array original
  • IllegalArgumentException: se lanza si form_index>to_index
  • NullPointerException: esto se lanza si la array original es nula

Variaciones: 

copyOfRange(boolean[] original, int from, int to)
copyOfRange(byte[] original, int from, int to)
copyOfRange(char[] original, int from, int to)
copyOfRange(double[] original, int from, int to)
copyOfRange(float[] original, int from, int to)
copyOfRange(int[] original, int from, int to)
copyOfRange(long[] original, int from, int to)
copyOfRange(short[] original, int from, int to)
copyOfRange(T[] original, int from, int to)
copyOfRange(U[] original, int from, int to, Class newType)

Entendamos esto con un ejemplo: 

Java

// Java program to illustrate
// copyOfRange method
import java.util.Arrays;
class GFG {
public static void main(String args[])
    {
        int arr[] = { 12, 13, 14, 15, 16, 17, 18 };
 
        // to index is within the range
        int[] copy = Arrays.copyOfRange(arr, 2, 6);
        for (int i : copy)
            System.out.print(i + "  ");
 
        System.out.println();
        // to index is out of range
        // It assigns Zero to all the index out of range
        int[] copy1 = Arrays.copyOfRange(arr, 4, arr.length + 3);
 
        for (int i : copy1)
            System.out.print(i + "  ");
 
        // It throws IllegalArgumentException
        // int[] copy2 = Arrays.copyOfRange(arr, 5, 3);
 
        // It throws ArrayIndexOutOfBoundsException
        // int[] copy2 = Arrays.copyOfRange(arr, 10, arr.length + 5);
    }
}

Producción: 
 

14  15  16  17  
16  17  18  0  0  0  

Veamos un ejemplo de copyOfRange(T[] original, int from, int to) y copyOfRange(U[] original, int from, int to, Class newType) 
 

Java

// Java program to illustrate
// copyOfRange method
import java.util.Arrays;
class GFG {
    // User defined class
    static class Employee {
        int Eid;
        String Ename;
 
        // constructor
    public Employee(int Eid, String Ename)
        {
            this.Eid = Eid;
            this.Ename = Ename;
        }
 
        // Override toString()
    public String toString()
        {
            return Eid + "   " + Ename;
        }
    }
 
    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") };
 
        // Illustration of copyOfRange(T[] original, int from, int to)
        // Working with user defined class
        Employee[] getCopy_Employees = Arrays.copyOfRange(e, 3, 5);
        for (Employee e1 : getCopy_Employees)
            System.out.print(e1.toString() + "  ");
 
        System.out.println();
 
        // Illustration of copyOfRange(U[] original, int from, int to, Class newType)
        // In this we store the user defined class Employee into Object class
        // It Throws ArrayStoreException when we try to copy it in a class
        // That is not correct
        Object getcopy[] = Arrays.copyOfRange(e, 1, 3, Object[].class);
 
        // This throws an error
        // Number getcopy[] = Arrays.copyOfRange(e, 1, 3, Number[].class);
 
        for (Object e1 : getcopy) {
            System.out.print(e1.toString() + "  ");
        }
    }
}

Producción: 
 

40   geek4  50   geek5  
20   geek2  30   geek3  
 

copyOf vs copyOfRange
copyOf() comienza a copiar desde el índice 0 de la array original y copia el número especificado de elementos 
Mientras que copyOfRange() puede copiar el rango de elementos de la array original.
Referencia:  
docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOfRange-int:A-int-int-
Este artículo es una contribución de Sumit Ghosh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *