Sets: O Clube dos Únicos
SET TYPES
├── HashSet (Balada Alternativa)
├── LinkedHashSet (Festa Temática)
└── TreeSet (Clube da Alta Sociedade)
Fundamentos
Sets são como uma festa exclusiva - não tem repetido e cada um é único.
// Criando a lista do clube mais exclusivo
Set<String> clubeDosUnicos = new HashSet<>();
clubeDosUnicos.add("Hipster"); // Entra
clubeDosUnicos.add("Hipster"); // Barrado! Já tem um igual
Tipos de Sets (Diferentes Baladas)
HashSet (Balada Alternativa)
// Rápido e caótico, como uma rave
HashSet<String> rave = new HashSet<>();
rave.add("Raver"); // Ordem? Que ordem?
rave.add("DJ"); // Entra onde der
LinkedHashSet (Festa Temática)
// Mantém a ordem de entrada, como fila organizada
LinkedHashSet<String> tematica = new LinkedHashSet<>();
tematica.add("Anos 80"); // Primeiro
tematica.add("Anos 90"); // Segundo
TreeSet (Clube da Alta Sociedade)
// Sempre ordenado, como lista de socialites
TreeSet<String> clubeSocial = new TreeSet<>();
clubeSocial.add("Baronesa"); // Será ordenado
clubeSocial.add("Condessa"); // Automaticamente
Operações Básicas (Regras do Clube)
Adição (Tentando Entrar)
Set<String> clube = new HashSet<>();
clube.add("Sócio"); // Bem-vindo ao clube
clube.add("Sócio"); // Negado! Já é membro
clube.addAll(Arrays.asList("VIP", "Premium")); // Grupo VIP
Remoção (Cancelando Sociedade)
// Diferentes formas de expulsar
clube.remove("Ex-sócio"); // Remove específico
clube.removeIf(x -> x.startsWith("Inadimplente")); // Remove todos inadimplentes
Verificação (Lista na Porta)
// Checando quem pode entrar
boolean isMembro = clube.contains("VIP"); // Está na lista?
boolean todosVIP = clube.containsAll(vips); // Grupo inteiro na lista?
Operações de Conjunto (Misturando as Tribos)
Set<String> metaleiros = new HashSet<>();
Set<String> punks = new HashSet<>();
// União (Festa de Rock)
Set<String> rockeiros = new HashSet<>(metaleiros);
rockeiros.addAll(punks);
// Interseção (Amigos em Comum)
Set<String> hibridos = new HashSet<>(metaleiros);
hibridos.retainAll(punks);
// Diferença (Só Metaleiros)
Set<String> puristas = new HashSet<>(metaleiros);
puristas.removeAll(punks);
Iteração (Fazendo a Social)
// For each (Cumprimentando todo mundo)
for (String socio : clube) {
System.out.println("Boa noite, " + socio);
}
// Iterator (Revista VIP)
Iterator<String> revista = clube.iterator();
while (revista.hasNext()) {
String pessoa = revista.next();
if (pessoa.contains("Indesejado")) {
revista.remove(); // Tchau!
}
}
Dicas de Etiqueta
Escolha do Clube
HashSet: Quando só importa ser único
LinkedHashSet: Quando a ordem de entrada importa
TreeSet: Quando precisa manter tudo ordenado
Performance
// Define tamanho inicial se souber
Set<String> vips = new HashSet<>(100);
// Use o tipo certo pra cada ocasião
Set<String> ordenados = new TreeSet<>(); // Sempre ordenado
Exercícios Práticos
Implemente um sistema de controle de sócios
Crie um gerenciador de eventos exclusivos
Desenvolva um verificador de duplicatas
Próximos Passos
Depois de dominar os Sets, você estará pronto para:
Gerenciar coleções sem duplicatas
Implementar sistemas de membros
Trabalhar com conjuntos matemáticos
26 June 2025