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:
- El índice inicial, es decir (from_index) debe estar entre 0 y original_array.length
- 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.
- La array de retorno tiene una longitud de será a-desde
- 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