La prima cosa che devi sapere è che si HashSet
comporta come un Set
, il che significa che aggiungi l'oggetto direttamente a HashSet
e non può contenere duplicati. Devi solo aggiungere il tuo valore direttamente in HashSet
.
Tuttavia, HashMap
è un Map
tipo. Ciò significa che ogni volta che aggiungi una voce, aggiungi una coppia chiave-valore.
In HashMap
puoi avere valori duplicati, ma non chiavi duplicate. Nella HashMap
nuova voce sostituirà quella vecchia. La voce più recente sarà nel HashMap
.
Comprensione del collegamento tra HashMap e HashSet:
Ricorda, HashMap
non puoi avere chiavi duplicate. Dietro la scena HashSet
usa a HashMap
.
Quando si tenta di aggiungere qualsiasi oggetto in a HashSet
, questa voce viene effettivamente memorizzata come chiave nel HashMap
- lo stesso HashMap
che viene utilizzato dietro la scena di HashSet
. Poiché questo sottostante ha HashMap
bisogno di una coppia chiave-valore, per noi viene generato un valore fittizio.
Ora, quando provi a inserire un altro oggetto duplicato nello stesso HashSet
, tenterà di nuovo di inserirlo come chiave nella parte HashMap
sottostante. Tuttavia, HashMap
non supporta i duplicati. Quindi, si HashSet
otterrà comunque un solo valore di quel tipo. Come nota a margine, per ogni chiave duplicata, poiché il valore generato per la nostra voce in HashSet è un valore casuale / fittizio, la chiave non viene affatto sostituita. verrà ignorato in quanto la rimozione della chiave e l'aggiunta della stessa chiave (il valore fittizio è lo stesso) non avrebbe alcun senso.
Sommario:
HashMap
consente duplicati values
, ma non keys
.
HashSet
non può contenere duplicati.
Per stabilire se l'aggiunta di un oggetto è stata completata correttamente o meno, è possibile verificare il boolean
valore restituito quando si chiama .add()
e vedere se restituisce true
o false
. Se è tornato true
, è stato inserito.
HashMap
per vedere sekey
esiste già prima di chiamareput
il supportomap
?