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:
Muchas gracias que buen articulo , he comenzado a seguir tu pagina desde hace poco y he aprendido un monton!!. Mil gracias desde Bogotá Colombia.
Me alegro German que los artículos te sirvan 🙂
Hola, Gracias por tu tiempo Cecilio.
Quería saber si con el java 8 hay la posibilidad de incluir una condición en el foreach o alguna forma de de hacerlo con lambdas:
List lista = new ArrayList();
for(miObjet obj:lista && condicion){
//resto del codigo
}
la condición sería llegar a un numero x de elementos de la lista antes de llegar al final de esta.
Gracias de antemano por aclaración alguna.
Buenas acabo de publicar un artículo que puede serte útil sobre el tema 😉
La página está muy buena, no me queda más que agradecerte, gracias por tu tiempo!
me alegro que te sea util 🙂
La página es genial. Muchas felicidades!
gracias 🙂
Hola. Primero que nada, quería comentarte que me encanta la página. ¡La sigo desde hace poco y no me dejas de sorprender con cada nuevo artículo!
Y segundo, quería pedirte que revises los subtítulos, que están repetidos. (El segundo debería ser Sort)
¡Saludos!
gracias por el aporte 😉 me alegro que te guste la página