Java/Estruturas de Dados/List
Java⏱ ~2 min de leitura

List

ArrayList, LinkedList e operações

List é uma interface que representa uma sequência ordenada de elementos que permite duplicatas. As duas implementações mais comuns são ArrayList (array dinâmico — acesso O(1) por índice, boa para leitura frequente) e LinkedList (nós encadeados — inserção/remoção O(1) nas extremidades, boa para muitas escritas).

Os métodos principais: add(elemento), add(índice, elemento), get(índice), set(índice, elemento), remove(índice), size(), contains(objeto), indexOf(objeto), subList(from, to), e iterator(). O utilitário Collections oferece sort(), reverse(), shuffle(), min() e max().

Escolha ArrayList para a maioria dos casos — é mais rápida para acesso aleatório, usa menos memória por elemento e tem melhor localidade de cache. Use LinkedList quando você faz muitas inserções ou remoções no início da lista.

Exemplo.java
import java.util.*;

List<String> linguagens = new ArrayList<>();

// ── Adicionar ─────────────────────────────────────
linguagens.add("Java");
linguagens.add("Python");
linguagens.add("Go");
linguagens.add(1, "Kotlin");  // insere no índice 1

// ── Acessar ───────────────────────────────────────
System.out.println(linguagens.get(0)); // "Java"
System.out.println(linguagens.size()); // 4
System.out.println(linguagens);        // [Java, Kotlin, Python, Go]

// ── Atualizar e remover ───────────────────────────
linguagens.set(2, "Ruby");             // substitui índice 2
linguagens.remove("Go");               // remove por valor
linguagens.remove(0);                  // remove por índice

// ── Iterar ────────────────────────────────────────
for (String lang : linguagens) {
    System.out.println(lang);
}

// ── Ordenar e verificar ───────────────────────────
Collections.sort(linguagens);
System.out.println(linguagens.contains("Java")); // false (removido)

// ── Conversão List ↔ Array ────────────────────────
String[] arr = linguagens.toArray(new String[0]);
List<String> fromArr = Arrays.asList("A", "B", "C");
💡 Dica pro

Arrays.asList() retorna uma lista de tamanho fixo — não permite add/remove. Para uma lista mutável, use new ArrayList<>(Arrays.asList(...)).

Recompensa+40 XP+exercícios