A partir do Java 8 foram adicionado expressões Lambda junto com novos métodos nas interfaces já existentes, assim permitindo códigos funcionais em java, segue abaixo alguns exemplos:
//Foi adicionado no Java8; //Uma operação que aceita um único argumento de entrada e não // retorna nenhum resultado; Consumer<Pesso< consumer = new Consumer<Pessoa>() { public void accept(Pessoa pessoa) { System.out.println(pessoa.getNome()); } }; Consumer<Pesso<> consumer = (Pessoa pessoa) -> System.out.println(pessoa.getNome()); //Como apresenta apenas um pametro não precisa declarar o tipo Pessoa Consumer<Pesso< consumer = pessoa -> System.out.println(pessoa.getNome()); pessoas.forEach(consumer); //ou pessoas.forEach(pessoa -> System.out.println(pessoa.getNome()));
Exemplos sem e com Lambda
Apresentar no console os nomes das pessoas na lista:
//Sem Lambda for(Pessoa pessoa : pessoas) { System.out.println(pessoa.getNome()); } //Com Lambda pessoas.forEach(pessoa -> System.out.println(pessoa.getNome()));
Observação
O método forEach foi adicionado em Collections e esperada um Consumer como parametro;
O método forEach foi adicionado em Collections e esperada um Consumer como parametro;
Implementar comparator no Collections.sort:
//sem lambda Collections.sort(pessoas, new Comparator<Pessoa>() { @Override public int compare(Pessoa o1, Pessoa o2) { return o1.getNome().compareTo(o2.getNome()); } }); //com lambda Collections.sort(pessoas, (Pessoa p1, Pessoa p2) -> p1.getNome().compareTo(p2.getNome())); // com lambda + novo metodo estatico de Comparator pessoas.sort(Comparator.comparing(p -> p.getNome()));
Remover pessoa com idade = 20 da lista:
for(int i = 0; i < lista.size(); i++) { if(lista.get(i).getIdade() == 20) { lista.remove(i); } } //Foi adicionado no Java8; //É uma interface utilizada para aplicar filtro em objetos; Predicate<Pessoa> predicate = new Predicate<Pessoa>() { @Override public boolean test(Pessoa pessoa) { return pessoa.getIdade() == 20; } }; lista.removeIf(predicate); //com Lambda lista.removeIf(p -> p.getIdade() == 20);
Observação
O método removeIf foi adicionado em Collections e esperada um predicate como parametro;
O método removeIf foi adicionado em Collections e esperada um predicate como parametro;