© Monstar Studio/Shutterstock.com
Hoje estamos revisando o For-Each Loop do Java, uma extensão do clássico For loop. Esses loops foram adicionados ao Java5 em 2004 e hoje em dia são uma ferramenta essencial ao trabalhar com arrays e coleções.
O plano é ensinar a você os fundamentos, que envolvem entender a lógica por trás dos loops For-Each e também seus sintaxe. Esta é uma ferramenta que você pode usar em quase qualquer projeto para dar aos seus programas um poderoso impulso na funcionalidade e eficiência.
O que são loops For-Each?
A principal função do loop For-Each é lidar com arrays. A ideia é que esse loop lhe dê o poder de iterar pelos itens de uma matriz ou coleção.
Cada item está pronto para modificações dentro da funcionalidade do corpo do loop. Então, o retorno será um novo array. Você pode aplicar qualquer lógica dentro do loop For-Each. Isso significa que o retorno sobre o investimento dessa ferramenta é extraordinário: você pode aplicá-la a praticamente qualquer array que imaginar.
Imagine que você está trabalhando com uma lista de nomes, e-mails, locais ou qualquer banco de dados extenso. Agora, imagine que você pode prepará-lo para outras operações com um simples comando. Exatamente.
Agora, vamos ver como construir e aplicar loops For-Each.
Exemplos de código
A sintaxe dos loops For-Each é clara e fácil de entender se você estiver familiarizado com Java.
for (type var: array) { instruções using var; }
Começamos com a palavra-chave For seguida pela declaração do array que queremos iterar. Em seguida, declaramos qualquer lógica que queremos aplicar (entre as chaves).
Agora vamos escrever um programa usando esses conceitos.
class First { public static void main(String[] args) { int array[]={1,2,3,4,5}; for (int elemento: array) System.out.print(elemento +””); } }//Saída//1 2 3 4 5
No exemplo acima, primeiro estabelecemos um array com alguns itens para que possamos processá-los. Depois disso, declaramos o loop For-Each real.
É vital declarar o tipo de array ao qual estamos aplicando o loop For-Each, pois isso geralmente evita erros e bugs.
Finalmente, o loop retornará cada item em cada iteração, como visto na seção de saída.
Todos os programadores gostam de eficiência. Bem, uma das vantagens dos loops For-Each é que eles evitam as etapas extras necessárias para declarar a lógica de um loop For normal. Vamos ver isso em um exemplo real:
//Sintaxe do loop For for (int i=0; i
Ambos os métodos nos dão o mesmo resultado, mas o For-Each Loop é um claro vencedor. A lógica é muito mais limpo e fácil de entender, tornando suas funcionalidades mais acessíveis para novos programadores.
No entanto, mesmo que os loops For-Each pareçam mais limpos, há algumas coisas que eles não podem fazer. Vamos falar sobre isso profundidade.
Desvantagens dos loops For-Each
O primeiro problema com os loops For-Each é que eles não podem modificar o array original. Isso não é um problema ao trabalhar com programas dinâmicos isso deve salvar o estado inicial. Mas pode haver situações em que um For Loop clássico seria uma escolha melhor. Vamos ver isso no código:
for (int: marks) { num=num*2; }//o o array original permanece o mesmo
Infelizmente, os loops For-Each não conseguem rastrear o índice dentro de um array. Portanto, não podemos usar nenhuma lógica que implique a obtenção do índice de um elemento.
for ( int num: números) { if ( num==alvo) { return ???;//o índice não pode ser encontrado } }
Os loops For-Each não podem iterar para trás em uma matriz. Além disso, loops de aninhamento e booleanos são outras áreas em que um loop For-Each pode não ser uma boa ideia.
Por que usar loops For-Each?
Como o próprio nome sugere, esse loop verifica cada item de uma coleção ou array. Isso nos permite processar grandes bancos de dados com facilidade e eficiência.
A iteração de dados é uma tarefa diária para programadores, portanto, qualquer ferramenta que possamos adicionar ao nosso conjunto de habilidades que ajude com isso deve ser bem-vinda de braços abertos.
Com os loops For-Each, as vantagens de um código mais limpo e fácil de entender compensam a falta de alguns recursos, como modificação de array. Você sempre pode usar o For Loop clássico se precisar dessa funcionalidade específica. Portanto, não se preocupe se você nem sempre pode aplicar o código mais fácil de escrever, mas lembre-se disso para situações em que isso pode economizar horas de trabalho!
Vamos explorar outras funcionalidades do For-Cada loop. Isso lhe dará uma dica do que ele pode fazer em combinação com outras ferramentas.
Digamos que temos uma coleção de arrays com dados neles. Nosso objetivo será nivelar esses dados em uma única matriz com o loop For-Each. Confira:
//stream de arrays Input: arr[][]={{1,2,3},{4,5,6},{7,8,9}} Output: [1 , 2, 3, 4, 5, 6, 7, 8, 9]
Como você pode ver no código, temos um fluxo de arrays prontos para processamento. Cada array contém uma série de números. O código que escreveremos incluirá alguns outros métodos Java, portanto, aproveite esta oportunidade para testar sua compreensão dessa linguagem de codificação!
Vamos ver como cada segmento de código funciona.
class exmpl {//Função principal public static Stream flattenStream(T[][] arrays) { List list=new ArrayList>(); for (T[] array: arrays) { Arrays.stream(array).forEach(list::add); } return lista.stream(); } public static void main(String[] args) { Integer [][] arr={ {1,2,3}, {4,5,6}, {7,8,9} }; Integer[] flatArray=flattenStream(arr).toArray(Integer[]::new); System.out.println(Arrays.toString(flatArray)); } }
Primeiro, estabelecemos uma função que contém todo o resto e declaramos uma lista para coletar os itens.
O próximo passo é usar o loop For-Each combinado com o método stream(). Dada a lista de números, cada item agora é um fluxo da lista. O retorno final, fora do loop For-Each, é a lista convertida em um único fluxo de informações.
Quando o fluxo estiver pronto, é hora de achatar o array. Declaramos cada número e, em seguida, chamamos a função que codificamos anteriormente em cada um. Esta função pega os dados e retorna tudo em um único array.
Este é apenas um exemplo minúsculo de como essas ferramentas fundamentais permitem que você manipule dados como um programador. Com eles, você pode brincar com as informações e encontrar novas maneiras de tornar seu código mais eficiente e fácil de depurar.
Conclusão: como usar o loop For-Each em Java
For-Cada loop é a maneira mais fácil de iterar em uma matriz ou coleção. Os itens coletados na matriz escolhida são processados com qualquer funcionalidade que desejarmos. Além disso, esse processamento pode ser feito usando uma combinação de vários métodos e funções.
Lembre-se, esses loops carecem de alguns recursos. Principalmente, eles não suportam iteração reversa, aninhamento de loop e rastreamento de índice. Sempre use um For Loop clássico para evitar bugs se precisar de alguma dessas funcionalidades.
No entanto, as possibilidades de desenvolvimento são ilimitadas quando você combina o For-Each Loop com outros métodos, como stream(). É isso que queremos deixar para você. Sempre procure novas maneiras de expandir seu horizonte como programador e nunca se contente com um único conjunto de ferramentas.
Recomendamos dar uma olhada na documentação oficial do Java para mais informações.
Como usar o loop For-Each nas perguntas frequentes sobre Java (perguntas frequentes)
Quando o Java foi desenvolvido?
O Java foi lançado em maio de 1995 e desenvolvido por James Gosling na Sun Microsystem. É uma das linguagens de programação orientada a objetos mais populares, com 9 milhões de usuários diários regulares.
Como instalo o Java?
Para instalar o Java , você precisa visitar a seção de download no site do Java e escolher o instalador correto para o seu sistema. É grátis! Java está disponível para Windows, Mac, Linux e Solaris.
O que é um loop For clássico?
Um loop For é um método para iteração construído com uma condição e um corpo. Ele permite que o usuário execute uma seção de código repetidamente até que a condição seja alcançada. Um loop For é uma alternativa para loops While, usado quando o número de iterações necessárias é fixo.
Como funciona o loop Java For-Each?
Posso usar loops For-Each com funções baseadas em índice?
Infelizmente, não. O loop For-Each não pode acompanhar a posição do índice em uma matriz. Felizmente, o loop For clássico permite que você use essa lógica sem erros.