Requisitos previos:
ParallelSetAll y setAll se introducen en la clase Arrays en Java 8.
- paraleloSetAll(): establece todos los elementos en la array especificada en paralelo mediante la función que calcula cada elemento.
Sintaxis:
public static void parallelSetAll(double[] arr, IntToDoubleFunction g) Parameters : arr : Array to which the elements to be set g : It is a function that accepts index of an array and returns the computed value to that index
- Variaciones:
parallelSetAll(double[] arr, IntToDoubleFunction g) parallelSetAll(int[] arr, IntUnaryOperator g) parallelSetAll(long[] arr, IntToLongFunction g) parallelSetAll(T[] arr, IntFunction g)
- setAll() : Establece todos los elementos en la array especificada por la función que calcula cada elemento.
Sintaxis:
public static void setAll(int[] arr, IntUnaryOperator g) Parameters : arr : Array to which the elements to be set g : It is a function that accepts index of an array and returns the computed value to that index
- Variaciones:
setAll(double[] array, IntToDoubleFunction generator) setAll(int[] array, IntUnaryOperator generator) setAll(long[] array, IntToLongFunction generator) setAll(T[] array, IntFunction generator)
conjuntoParaleloTodo() frente a conjuntoTodo()
Ambas funciones producen el mismo resultado que se puede ver, pero se considera que parallelSetAll() es más rápido ya que realiza los cambios en la array en paralelo (es decir, a la vez) mientras que setAll() actualiza cada índice de la array (es decir, uno tras otro). Aunque setAll() se ejecuta más rápido en una array de menor tamaño, pero parallelSetAll() se hace cargo de setAll() cuando el tamaño de la array es mayor.
Ejemplos
Veamos un ejemplo de parallelSetAll(int[] arr, IntUnaryOperator g) y setAll(int[] array, generador IntUnaryOperator)
Java
// Java program to demonstrate setAll() // and ParallelSetAll() import java.util.Arrays; import java.util.function.IntUnaryOperator; class GFG { public static void main(String[] args) { // Declaring arrays of integers int[] arr_parallel1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; int[] arr_parallel2 = Arrays.copyOf(arr_parallel1, arr_parallel1.length); int[] arr = Arrays.copyOf(arr_parallel1, arr_parallel1.length); // Applying parallelSetAll on Array arr_parallel1 IntUnaryOperator g = e-> { if (e % 2 == 0) return e * e; else return e; }; Arrays.parallelSetAll(arr_parallel1, g); /* Another way of passing the second argument. Uncomment to try . Arrays.parallelSetAll(arr_parallel1, e -> { if (e % 2 == 0) return e * e; else return e; }); */ System.out.println("Example 1: Modifying the values at even" + " index and storing the square of index"); // Printing the modified array Arrays.stream(arr_parallel1).forEach(e->System.out.print(e + " ")); // Applying parallelSetAll on Array arr_parallel2 Arrays.parallelSetAll(arr_parallel2, e-> { if (arr_parallel2[e] % 2 == 0) return arr_parallel2[e] * arr_parallel2[e]; else return arr_parallel2[e]; }); System.out.println("\n\nExample 2: Modifying the values when" + "even value is encountered"); // Printing the modified array Arrays.stream(arr_parallel2).forEach(e->System.out.print(e + " ")); // Applying setAll on Array arr Arrays.setAll(arr, e-> { if (e % 2 == 0) return e * e; else return e; }); System.out.println("\n\nExample 3:setAll gives exactly " + "same output as parallelSetAll"); // Printing the modified array Arrays.stream(arr).forEach(e->System.out.print(e + " ")); } }
Producción:
Example 1: Modifying the values at even index and storing the square of index 0 1 4 3 16 5 36 7 64 9 100 11 144 13 196 15 256 17 324 19 Example 2: Modifying the values when even value is encountered 1 4 3 16 5 36 7 64 9 100 11 144 13 196 15 256 17 324 19 400 Example 3:setAll gives exactly same output as parallelSetAll 0 1 4 3 16 5 36 7 64 9 100 11 144 13 196 15 256 17 324 19
Ejemplo 2: incluso podemos pasar arrays de tipos de datos definidos por el usuario. Veamos un ejemplo de setAll(T[] array, IntFunction generator) y parallelSetAll(T[] arr, IntFunction g)
Java
// Java program to demonstrate setAll() // and ParallelSetAll import java.util.Arrays; class GFG { // User Defined class Person static class Person { String name; int age; // constructor public Person(String name, int age) { this.name = name; this.age = age; } } public static void main(String[] args) { // Declaring Arrays of person Person p[] = { new Person("samir", 20), new Person("anil", 25), new Person("amit", 10), new Person("rohit", 17), new Person("Geek5", 19), new Person("sumit", 22), new Person("gourav", 24), new Person("sunny", 27), new Person("ritu", 28) }; // Applying parallelSetAll on p array Arrays.parallelSetAll(p, e->{ if (p[e].name.startsWith("s")) return new Person("You are a geek", 100); else return new Person(p[e].name, p[e].age); }); System.out.println("Example 1; Modifying the name that starts with s"); // Printing array elements Arrays.stream(p).forEach(e->System.out.println(e.name + " " + e.age)); // Declaring another array of person Person p1[] = { new Person("samir", 16), new Person("anil", 25), new Person("amit", 10), new Person("rohit", 17), new Person("Geek5", 19), new Person("sumit", 16), new Person("gourav", 24), new Person("sunny", 11), new Person("ritu", 28) }; // Applying setAll on p1 Arrays.setAll(p1, e->{ if (p1[e].age < 18) return new Person("Teenager", p1[e].age); else return new Person(p1[e].name, p1[e].age); }); System.out.println("\n\nExample 2: Modifying name whose" + "age is less than 18"); // Printing array elements Arrays.stream(p1).forEach(e->System.out.println(e.name + " " + e.age)); } }
Producción:
Example 1; Modifying the name that starts with s You are a geek 100 anil 25 amit 10 rohit 17 Geek5 19 You are a geek 100 gourav 24 You are a geek 100 ritu 28 Example 2: Modifying name whose age is less than 18 Teenager 16 anil 25 Teenager 10 Teenager 17 Geek5 19 Teenager 16 gourav 24 Teenager 11 ritu 28
Referencia:
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html
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