Iterando uma lista em Java

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:

Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP

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.

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Veja outros artigos sobre Programação