Un Set es una colección que NO permite duplicados: si agregas un elemento que ya existe (según equals()), simplemente se ignora.
Set nombres = new HashSet<>();
nombres.add("Ana");
nombres.add("Ana"); // se ignora, ya existe
System.out.println(nombres.size()); // 1
HashSetno garantiza ningún orden particular; es la implementación más rápida en general.
TreeSetmantiene los elementos ordenados automáticamente (orden natural o con Comparator).
Pon a prueba lo que aprendiste
Concepto
¿Qué pasa si agregas un elemento duplicado a un Set?
ASe agrega igual, quedando duplicado
BLanza una excepción
CSe ignora silenciosamente, el Set no cambia
DReemplaza el elemento anterior
Ver respuesta
C) Se ignora silenciosamente, el Set no cambia Add() de un duplicado devuelve false y no modifica el Set.
HashSet vs TreeSet
¿Qué garantiza TreeSet que HashSet no garantiza?
AQue se puedan agregar null
BQue los elementos queden ordenados automáticamente
CAcceso por índice
DQue no haya duplicados (ambos lo garantizan)
Ver respuesta
B) Que los elementos queden ordenados automáticamente TreeSet mantiene orden; HashSet no garantiza ningún orden en particular.
equals/hashCode
¿De qué depende que un HashSet detecte correctamente los duplicados de objetos personalizados?
ANo depende de nada, siempre funciona
BDe que la clase tenga equals() y hashCode() bien implementados y consistentes
CDe que la clase sea abstract
DDe usar TreeSet en vez de HashSet
Ver respuesta
B) De que la clase tenga equals() y hashCode() bien implementados y consistentes HashSet usa hashCode() y equals() para decidir si un elemento ya existe.
🎯 Practica esta lección completa
Ejercicios de completar código, ordenar bloques y respuesta libre. Ganas XP y mantienes tu racha.