Crie uma pregação Java 8, é uma das operações que faremos mais quando trabalharmos com expressões lambda e fluxos em Java 8. O que é um predicado? , Um predicado é uma interface funcional que define uma condição de que um determinado objeto deve cumprir. Por exemplo, é uma pessoa mais de 20 anos de idade ?.
O predicado tem um único método chamado Teste que recebe o objeto e verifica se ele atende à condição. Vamos construir o exemplo, apoiando-nos na classe Pessoa.
package com.arquitecturajava;public class Persona {private String nombre;private String apellidos;private int edad;public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public Persona(String nombre, String apellidos, int edad) {super();this.nombre = nombre;this.apellidos = apellidos;this.edad = edad;}public String getApellidos() {return apellidos;}public void setApellidos(String apellidos) {this.apellidos = apellidos;}public int getEdad() {return edad;}public void setEdad(int edad) {this.edad = edad;}}
Vamos construir uma lista de pessoas para mais tarde aplicar um predicado sobre isso .
public class Principal {public static void main(String args) {List<Persona> lista = new ArrayList<>();Persona p1 = new Persona("pepe", "perez", 20);Persona p2 = new Persona("angel", "sanchez", 30);Persona p3 = new Persona("pepe", "blanco", 40);lista.add(p1);lista.add(p2);lista.add(p3);}}
Finalmente, irá converter a lista em um fluxo de dados e vamos percorrê-lo:
lista.stream().forEach(new Consumer<Persona>() {@Overridepublic void accept(Persona p) {System.out.println(p.getNombre());}});
o resultado será
Pepe
anjo
Pepe
Java 8 pregar
temos viajado a lista, vamos criar um predicado que é responsável por definir uma condição que permite filtrar a lista.
Predicate<Persona> predicadoNombre = new Predicate<Persona>() {@Override public boolean test(Persona p) { return p.getNombre().equals("pepe"); }};
neste caso que acabamos de criar um predicado que só vai conhecer pessoas que são chamados de “pepe”. Usamos o nível de Filtro Uma função Stream para passar este objeto pregado e força que ele é filtrado com base na condição de que o predicado define.
lista.stream().filter(predicadoNombre).forEach(p -> System.out.println(p.getApellidos()));
o resultado na tela será:
O fluxo foi suportado pelo predicado para filtrar e ficar com pessoas que são chamadas de “Pepe”. Lembre-se que as interfaces funcionais podem ser vistas como expressões lambda e sua gestão é mais simples.
É hora de converter nossa Java 8 pregando uma expressão lambda para a clareza ganho:
lista.stream().filter(p -> p.getNombre().equals("pepe")).forEach(p -> System.out.println(p.getApellidos()));
O resultado será idêntico:
Java 8 predicados são Inponscindiable
Outros artigos relacionados: Java Lambda Java Streams