Iterando uma lista em Java
Tenho uma lista com todos os livros que comprei e quero saber quanto eu gastei no total:
List<Livro> compras = new ArrayList<Livro>();
compras.add(new Livro("Java", 25.50));
compras.add(new Livro("HTML e CSS", 21.30));
compras.add(new Livro("Android", 22.54));
Agora vou varrer minha lista e somar o preço de cada livro usando um for:
double total = 0;
for (int i = 0; i < compras.size(); i++) {
total = total + compras.get(i).getPreco(); }
Resultado:
69.34
Agora eu sei quanto gastei! Porém, olha o tanto de parâmetro e código que tive que escrever...será que não tem uma forma mais simples de resolver? A partir do Java 1.5 foi disponibilizado o enhanced-for ou mais conhecido como foreach:
double total = 0;
for (Livro livro : compras) {
total = total + livro.getPreco(); }
Resultado:
69.34
Veja que temos o mesmo resultado! Mas o que está acontecendo nesse código? Basicamente estamos pegando cada objeto(livro) contido na lista, ou seja, para cada (for each) livro some o seu preço com o total. Bem intuitivo e simples! Poderíamos até imprimir todos os livros usando o foreach:
for (Livro livro : compras) {
System.out.println(livro.getNome()); }
Resultado:
Java HTML e CSS Android
A partir do Java 8 foi introduzido o método forEach()
capaz de fazer iterações em lista de forma similar ao enhanced-for:
compras.forEach(livro -> System.out.println(livro.getNome()));
Resultado:
Java HTML e CSS Android
Bem mais simples! E tudo em uma única linha!
E aí, gostou dessa nova implementação do Java 8? Quer conhecer mais sobre as novidades do Java 8? O criador da Caelum, Paulo Silveira, criou o curso de Java 8 e suas bibliotecas com mais 1500 alunos e 99% recomendação.