Ejemplo sencillo de Lambda con NetBeans
Crear un proyecto nuevo
File--> New Project-->Categories: Maven Projects: Java Application
Indicamos el nombre del proyecto
El IDE genera el esqueleto del proyecto
En propiedades del proyecto
Sources--> Source/Binary Format:
Crearemos una clase llamada Persona con los atributos (id,nombre,edad)
Clic derecho el paquete com.avbravo.testlambda --> New--> Java Class
Colocar el nombre: Persona
El IDE genera la nueva clase
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.avbravo.testlambda;
/**
*
* @author avbravo
*/
public class Persona {
}
Clic derecho en el cĆ³digo -->Seleccionar Insert Code...
Seleccionar Add Property...
Agregamos la propiedad id y tipo String. Se generan los mƩtodos set/get
repetimos el proceso para el atributo String nombre, Integer edad;
Agregamos los mƩtodos constructores
public Persona() {
}
public Persona(String id, String nombre, Integer edad) {
this.id = id;
this.nombre = nombre;
this.edad = edad;
}
Agregar el mƩtodo toString(). Clic derecho Insert Code---> toString()
@Override
public String toString() {
return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
}
CĆ³digo completo Persona.java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.avbravo.testlambda;
/**
*
* @author avbravo
*/
public class Persona {
private String id;
private String nombre;
private Integer edad;
public Persona() {
}
public Persona(String id, String nombre, Integer edad) {
this.id = id;
this.nombre = nombre;
this.edad = edad;
}
/**
* Get the value of edad
*
* @return the value of edad
*/
public Integer getEdad() {
return edad;
}
/**
* Set the value of edad
*
* @param edad new value of edad
*/
public void setEdad(Integer edad) {
this.edad = edad;
}
/**
* Get the value of nombre
*
* @return the value of nombre
*/
public String getNombre() {
return nombre;
}
/**
* Set the value of nombre
*
* @param nombre new value of nombre
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* Get the value of id
*
* @return the value of id
*/
public String getId() {
return id;
}
/**
* Set the value of id
*
* @param id new value of id
*/
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
}
}
Crear una Java Main Class...
Agregamos un ArrayList<Persona> , escribimos un segmento de cĆ³digo sin usar Lambda, donde usamos un for y una condiciĆ³n lĆ³gica para filtrar
for(Persona p:list){
if(p.getEdad() >=30 ){
System.out.println(" --> "+p.toString());
}
}
clic en el asistente y seleccionar Use functional Operation
el ide genera el cĆ³digo lambda
list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
System.out.println(" --> "+p.toString());
});
Se usa un stream() de la lista ,se aplica el filtro
CĆ³digo Completo
package com.avbravo.testlambda;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author avbravo
*/
public class Prueba {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
List<Persona> list = new ArrayList<>();
list.add(new Persona("1","anna",25));
list.add(new Persona("2","jhoan",30));
list.add(new Persona("3","maria",40));
System.out.println(" sin utilizar lambda");
for(Persona p:list){
if(p.getEdad() >=30 ){
System.out.println(" --> "+p.toString());
}
}
System.out.println("lambda");
list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
System.out.println(" --> "+p.toString());
});
} catch (Exception e) {
System.out.println("Error "+e.getLocalizedMessage());
}
}
Ejecutamos el proyecto
}
Comments