Mapeando e Reduzindo - Java 8

As vezes precisamos processar dados em um volume maior, onde é necessário filtrar a informação, selecionar ou alterar o que queremos para depois realizar o processamento. Como exemplo, vamos imaginar uma lista de alunos, onde cada instância tem seu nome e nota. Desta lista queremos a média geral, a média dos alunos aprovados (ou seja, quem tirou nota seis ou mais) e a média dos reprovados (nota menor que seis). Para isso, vamos primeiro visualizar nossa lista: 1 2 3 4 5 6 Listalunos = new ArrayList<>(); Aluno aluno1 = new Aluno("Cebolinha", 8.0); Aluno aluno2 = new Aluno("Cascao", 6.5); Aluno aluno3 = new Aluno("Monica", 9.0); Aluno aluno4 = new Aluno("Magali", 3.0); alunos.addAll(Arrays.asList(aluno1, aluno2, aluno3, aluno4)); Apesar da simplicidade dos nossos dados, para poder separar a nossa lista de forma a realizar esta média, precisamos iterar sobre todos os seus elementos. Vamos fazer primeiro a média mais simples, sem nenhum critério: 1 2 3 4 5 6 7 Double media = new Double("0"); int quantidadeDeAlunos = 0; for (Aluno aluno : alunos) { media = Double.sum(media, aluno.getNota()); quantidadeDeAlunos++; } System.out.println(media / quantidadeDeAlunos); ...

March 6, 2014 · Lucas Polo