Las novedades en el Java 8 Collections Framework son muchas e incluyen expresiones lambda y streams como parte fundamental de la renovación. Sin embargo los cambios son mucho mayores y afectan a practicamente todos los rincones del framework . Vamos a ver un par de situaciones que han sido simplificadas sobre manera a traves de expresiones lambda extendiendo la funcionalidad del interface List.
Java 8 Collections List: removeIf
Hasta ahora podíamos utilizar el método remove del interface List para eliminar un elemento concreto. Lamentablemente este tratamiento era muy elemental. Normalmente uno quiere eliminar un elemento de la lista o varios aplicando una condición. A partir de Java 8 nos podemos apoyar en una expresión lambda para hacerlo usando el nuevo método removeIf.
ArrayList<Factura> lista= new ArrayList<Factura>();
Factura f1= new Factura("1",200,"telefono","clienteA");
Factura f2= new Factura("2",500,"impresora","clienteB");
Factura f3= new Factura("3",400,"impresora","clienteC");
lista.add(f1);
lista.add(f2);
lista.add(f3);
lista.removeIf(f->f.getClienteId().equals("clienteA"));
for(Factura f:lista) {
System.out.println(f.getClienteId());
}
En este caso hemos generado 3 facturas y eliminado la factura que pertenece al cliente A.
Java 8 Collections List : sort
Otro de los métodos añadidos a Java 8 Collections y su interface List es el método sort que permite utilizar una expresión lambda y generar un Comparador para ordenar la lista.
lista.sort(Comparator.comparing(Factura::getImporte));
for(Factura f:lista) {
System.out.println(f.getClienteId());
}
En este caso al ordenar por importe los clientes saldrán en orden inversos a como se imprimieron la primera vez:
Las expresiones Lambda y los Streams de Java 8 han dado una vuelta de tuerca a muchas partes del JDK que nos permitirá trabajar de forma más comoda.
Otros artículos relacionados: