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 Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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. Criador de mais de 40 cursos, como Kotlin, Flutter, Android, persistência de dados, comunicação com Web API, personalização de telas, testes automatizados, arquitetura de Apps e Firebase. É expert em Programação Orientada a Objetos, visando sempre compartilhar as boas práticas e tendências do mercado de desenvolvimento de software. Atuou 2 anos como editor de conteúdo no blog da Alura e hoje ainda escreve artigos técnicos.

Veja outros artigos sobre Programação