Iterar em Java
Crie um ArrayList<String> chamado tags, adicione oak depois pine, e percorra a lista com for (String t : tags) imprimindo cada palavra. Compile Lane.java e execute java Lane. A tela deve mostrar duas linhas: oak, depois pine. Cada passagem do laço imprime um valor. Percorrer cada valor da coleção é o que esta página ensina.
Percorra cada valor uma vez
Na página HashSet você verificava size e contains sem laço. Na página for-each anterior do curso você percorria um array fixo. Esta página percorre um ArrayList do mesmo jeito for-each e depois mostra um percurso indexado com get. A coleção cresce primeiro com add. O laço vem depois de guardar os valores.
Abra Lane.java. Mantenha o nome da classe pública Lane para combinar com o nome do arquivo. Apague demos restantes de HashSet, contains, Bin, Desk e put/get de mapa. Apague também qualquer Scanner ou nextLine. O programa não deve esperar digitação.
Perto do topo, acima de public class Lane, escreva:
import java.util.ArrayList;
Dentro de main, crie a lista e adicione duas palavras:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
Depois escreva o cabeçalho e o corpo do for-each:
for (String t : tags) { System.out.println(t); }
Os dois pontos ficam entre o tipo-e-nome do elemento e a coleção. Cada passagem coloca t na próxima palavra. Não escreva um contador nesta primeira demo. Salve antes de compilar.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (String t : tags) {
System.out.println(t);
}
}
}
Da pasta que guarda Lane.java, execute javac Lane.java. Quando parênteses, chaves, ângulos, dois pontos e ponto e vírgula combinam, o javac não escreve linha própria. Depois execute java Lane — não java Lane.java nem java ArrayList. Tire o final .java do comando de execução.
O programa deve imprimir duas linhas e parar: oak, depois pine. Não deve pedir que você digite. Se o terminal esperar entrada do teclado, ainda há uma chamada nextLine de um exercício antigo em um arquivo. Apague essa chamada e mantenha a criação, as duas linhas add e o for-each.
Percorra a execução uma vez. Java começa em Lane.main. A lista guarda oak depois pine. A primeira passagem coloca t em oak e imprime oak. A segunda coloca t em pine e imprime pine. Depois o laço termina. Nada mais deve imprimir. Se você vir só 2, imprimiu size() em vez de percorrer os valores. Se vir uma linha [oak, pine], imprimiu o objeto lista inteiro em vez de cada elemento — mantenha o corpo do for-each como println(t). Se vir true ou leaf, ainda roda uma demo Bin ou Desk — vá para java Lane.
Se o javac disser que não encontra ArrayList, o import falta ou está depois da linha da classe. Coloque import java.util.ArrayList; acima de public class Lane. Se escrever for (String t : tags) sem chaves e depois mais de uma linha de corpo, nesta página mantenha o corpo como um println dentro de chaves para a forma ficar clara. A grafia do nome da coleção depois dos dois pontos deve combinar com a lista que você criou: tags, não um slots restante da página for-each em array.
Percurso indexado com get
Uma segunda demo percorre a mesma lista com um for contado e get. Você vê o caminho do número do slot ao lado do caminho for-each.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (int i = 0; i < tags.size(); i++) {
System.out.println(tags.get(i));
}
}
}
Compile e execute do mesmo jeito. A tela mostra de novo oak, depois pine. O cabeçalho usa i a partir de 0 enquanto i < tags.size(). Cada chamada do corpo tags.get(i) lê um slot. Esse é o hábito get de list-methods dentro de um laço. Prefira o arquivo for-each como primeiro caminho de ensino quando não precisar do número de índice na tela. Mantenha o arquivo indexado para provar que ambos os percursos imprimem as mesmas duas linhas para esta lista. Se começar i em 1 por engano, a primeira palavra impressa seria pine e oak seria pulado — mantenha i em 0 para o percurso completo.
Não confie na ordem de impressão do HashSet para a tela do quiz desta página. Sets não prometem oak antes de pine. As demos ArrayList mantêm ordem estável para as duas linhas que você espera. Fique com ArrayList nos arquivos de ensino para a tela do quiz permanecer previsível.
Só o tamanho não é um percurso
Um terceiro arquivo mostra o hábito restante de imprimir só a contagem. Foi útil na página HashSet, mas não é iterar.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags.size());
}
}
Esse arquivo imprime 2 — um número, não as palavras. Use-o só como contraste. Os arquivos guardados da lição de iterar imprimem cada valor com for-each ou com get indexado. Não envie o arquivo só-size como caminho do quiz para a tela de duas linhas.
Comparado com for-each em arrays e com checagens HashSet
Antes, for-each percorria slots int[] ou String[]. Aqui os dois pontos ainda funcionam, mas o nome à direita é um ArrayList. Na página HashSet, size e contains respondiam sem imprimir cada valor. Esta página imprime cada valor. Uma demo restante de contains de Bin é outra lição. Para esta página mantenha Lane com o for-each que imprime oak depois pine.
Quando arquivos antigos Bin.java ainda estão por perto, deixe-os ou apague-os só se confundirem qual classe você executa. Execute java Lane depois de compilar o arquivo de percurso desta lição.
O que fica para wrappers
Esta página percorre valores da coleção. A página seguinte cobre tipos wrapper como Integer ao lado do int primitivo quando coleções precisam de objetos. Fique aqui com for-each e get indexado em ArrayList. Não invente demos wrapper como exigência nesta página.
Antes dos wrappers
Você pode importar java.util.ArrayList, adicionar oak e pine, e imprimir cada palavra com for (String t : tags). Também pode percorrer com for (int i = 0; i < tags.size(); i++) e tags.get(i). Compile Lane.java e execute java Lane. A tela mostra oak depois pine. A página seguinte são wrappers, onde tipos objeto ficam ao lado de primitivos para armazenamento em coleção.
Mantenha o import. Mantenha os dois add antes do laço. Mantenha for-each como o primeiro percurso de ensino. Esses hábitos são o ponto de checagem antes de seguir. Quando as duas linhas imprimem após o for-each, iterar cumpriu o trabalho desta lição e você está pronto para o próximo tópico.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo