Java 8 trae muchas mejoras, tal vez la más importante es que podemos utilizar clausuras o closures en ingles. Pero a la vez Java 8 trae una cantidad interesantes de métodos que utilizan esta nueva propiedad, y a la vez nos brindan mayor facilidad para resolver problemas.
A la vez Java 8 proporciona una nueva característica que es ordenar un vector en paralelo. El método Arrays.sort() se usa para ordenar, pero java 8 proporciona un método nuevo que es el método parallelSort() para ordenar paralelamente los elementos de un vector.
El método parallelSort() pertenece a la clase Arrays, que está disponible en el paquete java.util. El método parallelSort() es más rápido que el método Array.sort() y este método sigue a fork / join framework para asignar las tareas de clasificación a varios subprocesos que están disponibles en el grupo de subprocesos. El método parallelSort () está sobrecargado para todos los tipos de datos primitivos y objetos que implementen Comparable<T>.
Veamos un simple ejemplo de como ordenar con este metodo:
import java.util.Arrays;
class ParallelSortExample
{
public static void main(String args[]) {
//Creamos un vector de enteros
int a[] = {50, 10, 90, 40, 80};
//Ahora los ordenamos
Arrays.parallelSort(a);
for(int i : a) {
System.out.println(i);
}
}
}
Output: 10
40
50
80
90
También podemos pasarle un Comparator que indique como debe ordenar, veamos un ejemplo:
package com.concretepage;
import java.util.Arrays;
import java.util.Comparator;
import java.util.function.Consumer;
public class ParallelSortWithComparator {
public static void main(String[] args) {
User[] users = User.getUsers();
Comparator<User> ageComparator = Comparator.comparing(User::getAge);
System.out.println("--Sort complete array--");
Arrays.parallelSort(users, ageComparator);
Consumer<User> printUser = u-> System.out.println(u.getName()+"-"+u.getAge());
Arrays.stream(users).forEach(printUser);
System.out.println("--Sort array from index 1 to 4--");
users = User.getUsers();
Arrays.parallelSort(users, 1, 4, ageComparator);
Arrays.stream(users).forEach(printUser);
}
}