Probar con elementos nulos
En los pasos anteriores, hemos visto cómo HashSet
maneja elementos no nulos duplicados. Ahora, exploremos cómo se comporta HashSet
cuando intentamos agregar elementos null
. Entender cómo las colecciones manejan null
es importante porque, si no se maneja con cuidado, a veces puede provocar comportamientos inesperados o errores.
Un HashSet
permite un solo elemento null
. Si intentas agregar null
varias veces, solo se almacenará el primer null
.
Modifiquemos nuestro programa DuplicateCheck.java
una vez más para probar esto.
Abre el archivo DuplicateCheck.java
en el Editor de Código del WebIDE.
Modifica el método main
para incluir valores null
en la lista:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateCheck {
public static void main(String[] args) {
// Create a list with some duplicate and null elements
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add(null); // Add null
names.add("Alice"); // Duplicate
names.add("Charlie");
names.add(null); // Add null again
names.add("Bob"); // Duplicate
names.add("David");
names.add(null); // Add null a third time
System.out.println("Original List: " + names);
System.out.println("Size of Original List: " + names.size());
// Create a HashSet from the list
Set<String> uniqueNamesSet = new HashSet<>(names);
System.out.println("Set created from List: " + uniqueNamesSet);
System.out.println("Size of Set: " + uniqueNamesSet.size());
// The difference in size tells us how many duplicates were removed
// Note: This calculation is less straightforward with nulls and duplicates combined
// int duplicatesCount = names.size() - uniqueNamesSet.size();
// System.out.println("Number of duplicates (excluding first occurrence): " + duplicatesCount);
}
}
Aquí, hemos agregado null
a la lista names
varias veces. También hemos comentado el cálculo del número de duplicados porque se vuelve menos significativo cuando se involucra null
y nos estamos centrando en el comportamiento del conjunto con null
.
Guarda el archivo DuplicateCheck.java
modificado.
Compila el programa en la Terminal:
javac DuplicateCheck.java
Si la compilación es exitosa, ejecuta el programa:
java DuplicateCheck
Deberías ver una salida similar a esta:
Original List: [Alice, Bob, null, Alice, Charlie, null, Bob, David, null]
Size of Original List: 9
Set created from List: [null, Alice, Bob, Charlie, David]
Size of Set: 5
Observa la salida:
- La
Original List
muestra todos los elementos, incluyendo los múltiples valores null
. Su tamaño es 9.
- El
Set created from List
contiene solo elementos únicos. Observa que null
aparece solo una vez en el conjunto, incluso aunque se agregó varias veces a la lista. El tamaño del conjunto es 5 (Alice, Bob, Charlie, David y null).
Esto confirma que HashSet
permite un solo elemento null
y trata las adiciones posteriores de null
como duplicados, al igual que cualquier otro elemento.
Ahora has probado con éxito cómo HashSet
maneja elementos null
. Esto concluye nuestra exploración del uso de HashSet
para la verificación de duplicados y la comprensión de su comportamiento con elementos únicos y nulos.