La prima cosa che devi sapere è che si HashSetcomporta come un Set, il che significa che aggiungi l'oggetto direttamente a HashSete non può contenere duplicati. Devi solo aggiungere il tuo valore direttamente in HashSet.
Tuttavia, HashMapè un Maptipo. Ciò significa che ogni volta che aggiungi una voce, aggiungi una coppia chiave-valore.
In HashMappuoi avere valori duplicati, ma non chiavi duplicate. Nella HashMapnuova voce sostituirà quella vecchia. La voce più recente sarà nel HashMap.
Comprensione del collegamento tra HashMap e HashSet:
Ricorda, HashMapnon puoi avere chiavi duplicate. Dietro la scena HashSetusa a HashMap.
Quando si tenta di aggiungere qualsiasi oggetto in a HashSet, questa voce viene effettivamente memorizzata come chiave nel HashMap- lo stesso HashMapche viene utilizzato dietro la scena di HashSet. Poiché questo sottostante ha HashMapbisogno 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 HashMapsottostante. Tuttavia, HashMapnon supporta i duplicati. Quindi, si HashSetotterrà 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:
HashMapconsente duplicati values, ma non keys.
HashSetnon può contenere duplicati.
Per stabilire se l'aggiunta di un oggetto è stata completata correttamente o meno, è possibile verificare il booleanvalore restituito quando si chiama .add() e vedere se restituisce trueo false. Se è tornato true, è stato inserito.
HashMapper vedere sekeyesiste già prima di chiamareputil supportomap?