Iniciando com Lambda no Java 8

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;

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;
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s