ArrayList em Java
Crie um ArrayList<String> chamado tags, chame tags.add("oak"); e depois tags.add("pine");, e imprima a lista com System.out.println(tags);. Compile Shelf.java e execute java Shelf. O ecrã deve mostrar uma linha: [oak, pine]. Os colchetes e a vírgula pertencem à forma como o Java imprime a lista. Você faz a lista crescer com add. Essa lista crescente após o import é o que esta página ensina.
Uma lista que pode crescer
Na página de arrays, um String[] guardava um número fixo de lugares entre chaves. Você não podia chamar add nesse array. Um ArrayList é outro tipo de recipiente. Você o cria vazio e empurra valores com add. Cada add aumenta a lista em um. A linha de impressão mostra todos os valores guardados agora, entre colchetes, separados por vírgulas e espaços.
Abra Shelf.java. Mantenha o nome da classe pública Shelf para coincidir com o ficheiro. Apague restos de import kit.Bell;, Bell.ring();, package kit; e qualquer chamada a Porch ou Lobby das páginas anteriores. Isso pertence à história do módulo Classes. Esta página abre Collections. Apague também qualquer Scanner, nextLine ou leitura de teclado. O programa não deve esperar que você digite.
Perto do topo de Shelf.java, acima de public class Shelf, escreva:
import java.util.ArrayList;
Esse import traz o tipo ArrayList ao nome curto, como import kit.Bell; trouxe Bell na página de import. Sem essa linha, javac não vê o nome curto ArrayList nesta página. Escreva com cuidado o pacote java.util e a classe ArrayList. Não invente import java.util.*; como exigência aqui — um import exacto basta.
Dentro de main, crie a lista:
ArrayList<String> tags = new ArrayList<String>();
Os ângulos guardam String porque esta lição armazena palavras. O nome tags digita-se exactamente como no ficheiro guardado. A chamada new ArrayList<String>() constrói um objecto lista vazio. Nesse momento a lista guarda zero valores. Imprimi-la agora mostraria [], mas o ficheiro guardado acrescenta palavras antes de imprimir.
Adicione oak, depois pine, depois imprima
Chame tags.add("oak"); na sua própria linha. Depois chame tags.add("pine"); na linha seguinte. Cada chamada guarda uma palavra entre aspas. A ordem importa para o ecrã: primeiro oak, depois pine. Não as troque no ficheiro guardado. Não acrescente uma terceira palavra no ficheiro de ensino desta página — dois adds bastam para ver o crescimento e a forma impressa.
Depois escreva:
System.out.println(tags);
Passe o nome da lista. Não ponha aspas à volta de tags. Não escreva à mão System.out.println("oak"); como caminho da lição — a ideia é que o objecto lista leva as duas palavras e as imprime juntas. Guarde o ficheiro antes de compilar.
import java.util.ArrayList;
public class Shelf {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags);
}
}
Na pasta que guarda Shelf.java, execute javac Shelf.java. Quando parênteses, chaves, ângulos e ponto e vírgula coincidem, javac não escreve linha própria. Depois execute java Shelf — não java Shelf.java nem java ArrayList. Tire o final .java do comando de execução. Inicie a classe que tem main.
O programa deve imprimir uma linha e parar: [oak, pine]. Não deve pedir que você digite. Se o terminal esperar entrada do teclado, uma chamada nextLine de um exercício antigo ainda está num ficheiro. Apague-a e mantenha a criação do ArrayList, as duas linhas add e System.out.println(tags);.
Percorra a execução uma vez. O Java começa em Shelf.main. O import já nomeou qual ArrayList você quer. A linha new constrói uma lista vazia. O primeiro add guarda oak. O segundo add guarda pine. A linha de impressão pede à lista que mostre o conteúdo. O ecrã mostra [oak, pine]. Nada mais deve imprimir. Se vir ding, 9 ou ok, ainda está a executar um programa antigo Porch, Lobby, Pier ou Yard. Mude para java Shelf.
Se javac disser que não encontra ArrayList, a linha import falta, está errada ou está depois de public class Shelf. Mova import java.util.ArrayList; para cima da linha da classe. Se escrever tags.add(oak); sem aspas, javac trata oak como um nome inexistente. Mantenha as aspas à volta de cada palavra. Se escrever String[] tags = new ArrayList<String>();, os tipos não coincidem e javac recusa — nesta página mantenha ArrayList<String> dos dois lados da linha de criação.
Array fixo ao lado da lista crescente
Um contraste curto mantém a página de arrays à vista sem misturá-la na execução da lição. Um String[] fixo continua a funcionar. Não cresce com add.
public class Shelf {
public static void main(String[] args) {
String[] trees = {"oak", "pine"};
System.out.println(trees[0]);
}
}
Compile e execute esse contraste só para lembrar a forma fixa. O ecrã mostra oak — um lugar — não [oak, pine]. Não há chamada add. Para guardar uma terceira palavra num array fixo precisaria de um array novo com três lugares. O ficheiro de ensino ArrayList é o que tem import java.util.ArrayList;, duas chamadas add e System.out.println(tags);. Use o ficheiro de array fixo só como lembrete, não como caminho do quiz. Não misture trees.add("elm") nesse contraste — String[] não tem add, e javac recusaria.
Lado a lado
Uma tabela curta mantém a diferença clara.
📊 ArrayList vs String array
| Piece | On this page |
|---|---|
| create | ArrayList<String> tags = new ArrayList<String>(); |
| grow | tags.add("oak"); then tags.add("pine"); |
| print list | System.out.println(tags); → [oak, pine] |
| fixed array | String[] trees = {"oak", "pine"}; — no add |
A tabela é só um lembrete. As peças tipadas a guardar para o ficheiro da lição são o import, a criação do ArrayList, as duas chamadas add e a impressão de tags. |
Comparado com import e com arrays
Na página de import, Porch chamou Bell.ring(); após import kit.Bell;. Isso continua válido como história. Esta página muda o papel para Shelf e o import para java.util.ArrayList. Um resto de Bell.ring(); é outra lição. Para esta página mantenha ArrayList<String> tags, duas linhas add e imprima a lista.
Na página de arrays, as chaves enchiam um String[] fixo. Isso ainda serve para um tamanho conhecido. Esta lição escolhe ArrayList para ver o crescimento com add e uma só impressão de toda a lista. Não misture plants[0] e tags.add("oak") na mesma demo Shelf desta página. Um caminho claro basta: import, criar, add, add, imprimir.
Quando mais tarde precisar de get, size ou remove, a página seguinte — métodos de list — cobre essas chamadas. Fique aqui com add e a impressão completa da lista. Não invente um ciclo sobre a lista como exigência nesta página; imprimir o objecto lista basta para ver as duas palavras.
O que fica para métodos de list
Esta página abre Collections com uma lista que pode crescer. A página seguinte trabalha as chamadas habituais de lista, como ler um lugar ou perguntar quantos valores há. Fique aqui com add e a impressão completa. Não invente tags.get(0) como exigência aqui salvo se já souber; o objectivo é a lista crescente e o ecrã [oak, pine].
Quando ainda restarem perto ficheiros antigos Porch.java ou Lobby.java, deixe-os ou apague-os só se confundirem o comando de execução. Execute java Shelf depois de compilar o ficheiro ArrayList desta lição.
Antes dos métodos de list
Você pode importar java.util.ArrayList, criar ArrayList<String> tags, chamar tags.add("oak"); e tags.add("pine");, e imprimir tags. Compile Shelf.java e execute java Shelf. O ecrã mostra [oak, pine]. A lista cresceu com add. A página seguinte é métodos de list, onde você alcança um valor ou pergunta à lista o comprimento.
Mantenha o import acima da classe. Mantenha ambas as chamadas add antes de imprimir. Mantenha java Shelf para esta lição. Esses três hábitos são o ponto de controlo desta página antes de seguir. Quando o ecrã mostrar [oak, pine] após os dois adds, o ArrayList cumpriu o trabalho desta lição e você está pronto para o próximo tema.
🧠 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