Novedades de Java 8 Collections y Listas

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 prácticamente todos los rincones del framework . Vamos a ver un par de situaciones que han sido simplificadas sobre manera a través 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
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.

1
2
3
4
5
6
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 cómoda.

Fuente: , arquitecturajava

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *