Prerequisites :
parallelSetAll and setAll are introduced in Arrays class in java 8.
- parallelSetAll(): It set all the element in the specified array in parallel by the function which compute each element. 
 Syntax:
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
- Variations :
parallelSetAll(double[] arr, IntToDoubleFunction g) parallelSetAll(int[] arr, IntUnaryOperator g) parallelSetAll(long[] arr, IntToLongFunction g) parallelSetAll(T[] arr, IntFunction g)
- setAll() : It set all the element in the specified array in by the function which compute each element. 
 Syntax:
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
- Variations :
setAll(double[] array, IntToDoubleFunction generator) setAll(int[] array, IntUnaryOperator generator) setAll(long[] array, IntToLongFunction generator) setAll(T[] array, IntFunction generator)
parallelSetAll() vs setAll()
Both functions produces same output as can be seen, but parallelSetAll() is consider faster as it performs the changes on the array parallel(i.e. at once) while setAll() updates each indices of the array(i.e. one after another). Though setAll() runs faster on smaller sized array but parallelSetAll() takes over setAll() when the size of array is larger. 
 
Examples
Lets see an example of parallelSetAll(int[] arr, IntUnaryOperator g) and setAll(int[] array, IntUnaryOperator generator) 
 
Java
| // Java program to demonstrate setAll()// and ParallelSetAll()importjava.util.Arrays;importjava.util.function.IntUnaryOperator;classGFG{    publicstaticvoidmain(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)                returne * e;            else                returne;        };        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)                returnarr_parallel2[e] * arr_parallel2[e];            else                returnarr_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)                returne * e;            else                returne;        });        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 + " "));    }} | 
Output: 
 
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
Example 2 : We can even even pass arrays of user defined data type. Lets see an example of setAll(T[] array, IntFunction generator) and parallelSetAll(T[] arr, IntFunction g)
 
Java
| // Java program to demonstrate setAll()// and ParallelSetAllimportjava.util.Arrays;classGFG {    // User Defined class Person    staticclassPerson {        String name;        intage;        // constructor    publicPerson(String name, intage)        {            this.name = name;            this.age = age;        }    }    publicstaticvoidmain(String[] args)    {        // Declaring Arrays of person        Person p[] = { newPerson("samir", 20),                       newPerson("anil", 25), newPerson("amit", 10),                       newPerson("rohit", 17), newPerson("Geek5", 19),                       newPerson("sumit", 22), newPerson("gourav", 24),                       newPerson("sunny", 27), newPerson("ritu", 28) };        // Applying parallelSetAll on p array        Arrays.parallelSetAll(p, e->{            if(p[e].name.startsWith("s"))                returnnewPerson("You are a geek", 100);            else                returnnewPerson(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[] = { newPerson("samir", 16),                        newPerson("anil", 25), newPerson("amit", 10),                        newPerson("rohit", 17), newPerson("Geek5", 19),                        newPerson("sumit", 16), newPerson("gourav", 24),                        newPerson("sunny", 11), newPerson("ritu", 28) };        // Applying setAll on p1        Arrays.setAll(p1, e->{            if(p1[e].age < 18)                returnnewPerson("Teenager", p1[e].age);            else                returnnewPerson(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));    }} | 
Output: 
 
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
Reference : 
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html 
This article is contributed by Sumit Ghosh. If you like Lazyroar and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the Lazyroar main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 


 
                                    







