Funcionamiento de Lambdas Java 8
Unas de las principales características de Java SE 8 es la adición de las Expresiones Lambdas esta nos permite crear código mucho mas significativos y nos ayuda tener una programación funcional en java.
Por medio de un ejemplo introduciremos a una de las muchas funciones que se pueden realizar con las expresiones lambdas.Supongamos que tenemos una clase Person la cual tiene un nombre y un entero.
class Person { String name; int age; void setName(String name) { this.name = name; } String getName() { return this.name; } void setAge(int age) { this.age = age; } int getAge() { return this.age; } }
Supongamos que se quiere realizar una Lista de Persons para poder acceder a esta de diferentes formas.
public class main { private static List<Person> list = new ArrayList<>(); public static void main(String[] args) { // TODO Auto-generated method stub Person person = new Person(); person.setName("mario"); person.setAge(21); list.add(person); person = new Person(); person.setName("juliana"); person.setAge(21); list.add(person); person = new Person(); person.setName("natalia"); person.setAge(21); list.add(person); } }
En el fragmento de código anterior se creo una lista de Persons con 3 personas como primer paso para ver un uso de Lambda es la forma de imprimir la lista en consola.
() -> return
() -> { your code go here }
(parameters) -> { your code go here}
for (Person a : list) { System.out.println("nombre : " + a.getName()); } System.out.println(" \n Impresión con lambda "); list.forEach(a -> { System.out.println("nombre : " + a.getName()); });
Como lo ven en el segundo ejemplo List tiene un método forEach en el cual como parámetro un iterator el cual es una interfaz y para hacer uso de esta se tenia que instanciar y añadir sus métodos , con el uso de lambda podemos recorrer las lista sin necesidad de usar el For. el parámetro "a" es la variable en la cual se esta guardando cada valor de la lista como se hace en el primer for. Ahora vamos a ver un código donde verán las diferencias de como ordenar una Lista.
Collections.sort(list, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return new Integer(o1.getName().compareTo(o2.getName())); } }); Collections.sort(list, (o1, o2) -> o1.getName().compareTo(o2.getName()));
Ya con la idea de como es la sintaxis de las expresiones lambdas ya pueden diferenciar cual linea de código es en la que se están utilizando , recuerdan el antes para ordenar una lista se usaba la clase Collections con el método sort que de parámetros por lo general uno ingresaba la lista a ordenar y una iterfaz Comparator la cual tenia una metodo y retornábamos un compareTo y el metodo sort nos ordenaba la lista.
Con la aplicacion de lambdas en la ultima linea se ve la gran diferencia donde se reciben dos parámetros en el cual no especificamos el tipo de estos , como en el anterior que era de tipo Person y retorna un valor numero con el compare To.
Fuente: Introducción a Expresiones Lambda
Post a Comment