Lists: A Playlist do Baile Funk
LIST TYPES
├── ArrayList (Camarote VIP)
└── LinkedList (Fila do Open Bar)
Fundamentos
Lists são como uma festa funk - tem ordem, repetição e sempre cabe mais um.
// Criando a lista de convidados
List<String> convidados = new ArrayList<>();
convidados.add("MC Kevinho"); // Adiciona no fim da lista
convidados.add(0, "MC Livinho"); // Fura a fila (adiciona no início)
ArrayList vs LinkedList
ArrayList (Camarote VIP)
// Rápido pra achar alguém, como camarote numerado
ArrayList<String> camarote = new ArrayList<>();
camarote.add("Anitta");
camarote.get(0); // Acesso direto, mesa 0
LinkedList (Fila do Open Bar)
// Melhor pra galera entrar e sair, como fila de open bar
LinkedList<String> openBar = new LinkedList<>();
openBar.addFirst("Sedento"); // Furando fila
openBar.addLast("Paciente"); // Entrando no fim
Operações Básicas (Como Gerenciar o Baile)
Adição (Deixa Entrar)
// Vários jeitos de deixar a galera entrar
List<String> baile = new ArrayList<>();
baile.add("Dançarino"); // Fim da fila
baile.add(0, "DJ"); // VIP, direto pro início
baile.addAll(Arrays.asList("MC", "DJ", "Beat Maker")); // Grupo
Remoção (Expulsando da Festa)
// Diferentes formas de expulsar
baile.remove("Confusão"); // Remove elemento específico
baile.remove(0); // Remove da posição
baile.removeIf(x -> x.contains("Briga")); // Remove todos briguentos
Acesso (Procurando na Multidão)
// Encontrando a galera
String vip = baile.get(0); // Pega pela posição
int pos = baile.indexOf("DJ"); // Onde tá o DJ?
boolean temMC = baile.contains("MC"); // O MC chegou?
Lists Especializadas (Áreas VIP)
Vector (Antiga Casa de Show)
// Synchronized por padrão, como segurança old school
Vector<String> casaAntiga = new Vector<>();
casaAntiga.add("Dançarino Clássico");
Stack (Pilha de Caixas de Som)
// LIFO - Last In, First Out
Stack<String> equipamento = new Stack<>();
equipamento.push("Grave"); // Empilha
String topo = equipamento.pop(); // Desempilha
Ordenação (Organizando o Line-up)
// Ordenando a lista de apresentações
List<String> lineup = new ArrayList<>();
lineup.addAll(Arrays.asList("MC Late", "DJ Early", "MC Prime"));
// Ordem alfabética
Collections.sort(lineup);
// Ordem personalizada
lineup.sort((a, b) -> a.length() - b.length()); // Por tamanho do nome
Iteração (Passando o Som)
// For tradicional (Contagem regressiva)
for (int i = 0; i < lineup.size(); i++) {
System.out.println("Próximo: " + lineup.get(i));
}
// For each (Passando o som)
for (String artista : lineup) {
System.out.println("No palco: " + artista);
}
// Iterator (Revista na entrada)
Iterator<String> revista = lineup.iterator();
while (revista.hasNext()) {
String pessoa = revista.next();
if (pessoa.contains("Problema")) {
revista.remove(); // Barrado
}
}
Dicas Pro Baile
Escolha Certa
ArrayList: Quando precisa acessar rápido
LinkedList: Quando a galera entra e sai muito
Performance
// Define o tamanho se souber quantos vem
List<String> convidados = new ArrayList<>(100);
// Limpa a lista depois da festa
convidados.clear();
Exercícios Práticos
Implemente um sistema de fila de entrada
Crie um gerenciador de playlists
Desenvolva um controlador de pedidos de música
Próximos Passos
Depois de dominar as Lists, você estará pronto para:
Gerenciar qualquer tipo de sequência ordenada
Implementar filas e pilhas eficientes
Organizar dados com repetição
26 June 2025