Lo primero que debe saber es que HashSet
actúa como a Set
, lo que significa que agrega su objeto directamente HashSet
y no puede contener duplicados. Simplemente agrega tu valor directamente HashSet
.
Sin embargo, HashMap
es un Map
tipo. Eso significa que cada vez que agrega una entrada, agrega un par clave-valor.
En HashMap
puede tener valores duplicados, pero no claves duplicadas. En HashMap
la nueva entrada se reemplazará la anterior. La entrada más reciente estará en el HashMap
.
Comprender el enlace entre HashMap y HashSet:
Recuerde, HashMap
no puede tener claves duplicadas. Detrás de la escena HashSet
usa a HashMap
.
Cuando intentas agregar cualquier objeto a HashSet
, esta entrada se almacena realmente como una clave en HashMap
el mismo, HashMap
que se usa detrás de escena HashSet
. Dado que este subyacente HashMap
necesita un par clave-valor, se genera un valor ficticio para nosotros.
Ahora, cuando intente insertar otro objeto duplicado en el mismo HashSet
, nuevamente intentará insertarlo como una clave en la HashMap
mentira debajo. Sin embargo, HashMap
no admite duplicados. Por lo tanto, HashSet
seguirá teniendo como resultado un solo valor de ese tipo. Como nota al margen, para cada clave duplicada, dado que el valor generado para nuestra entrada en HashSet es un valor aleatorio / ficticio, la clave no se reemplaza en absoluto. se ignorará como eliminar la clave y volver a agregar la misma clave (el valor ficticio es el mismo) no tendría ningún sentido.
Resumen:
HashMap
permite duplicar values
, pero no keys
.
HashSet
no puede contener duplicados.
Para jugar si la adición de un objeto se completó con éxito o no, puede verificar el boolean
valor devuelto cuando llama .add()
y ver si regresa true
o false
. Si regresó true
, se insertó.
HashMap
para ver sikey
ya existe antes de llamarput
al respaldomap
?