Carregando...

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.

Shelf ArrayList add oak pine

java
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.

fixed String array contrast

java
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

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 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