2012-01-19 30 views
32

Come posso avere una HashMap con chiavi univoche in Java? O forse ha senso avere delle chiavi univoche in HashMap o i tasti sono unici per impostazione predefinita? Sono un principiante. thxCome posso avere una HashMap con chiavi univoche in java?

+5

Le chiavi _are_ sono univoche per impostazione predefinita. Nota che '.keySet()' su una 'Mappa' restituisce un' Set', e gli elementi di un 'Set' sono unici per impostazione predefinita. Se si tenta di inserire un valore in una chiave esistente, il vecchio valore verrà sovrascritto. – fge

+1

nota che "univoco" in java significa uguale in termini di implementazione dei metodi equals e hashcode! – Hachi

risposta

26

I tasti sono unici in tutte le mappe. La differenza tra le varie implementazioni di mappe riguarda la possibilità di chiavi null, l'ordine di iterazione e problemi di concorrenza.

47

La chiave della mappa hash è unica. Aggiungi la chiave duplicata, quindi verrà sovrascritta.

HashMap hm = new HashMap(); 
hm.put("1", new Integer(1)); 
hm.put("2", new Integer(2)); 
hm.put("3", new Integer(3)); 
hm.put("4", new Integer(4)); 
hm.put("1", new Integer(5));// value integer 1 is overwritten by 5 

Per impostazione predefinita, Hashmap non è sincronizzato.

+0

così come facciamo a rendere la relazione di valore chiave non univoca, cioè, voglio anche il valore 5 per la chiave 1 sopra? C'è qualche metodo per servire allo scopo –

+0

@VamsiPavanMahesh, dovrai memorizzare una sorta di 'Elenco' o 'Mappa' per quel corrispondente tasto'. 'Mappa m = new HashMap <>();' – Emz

1

HasMap ha chiavi univoche. come .keySet() restituisce Set che ha membri unici

1

HashMap è una raccolta per memorizzare coppie (chiave, valore) e Secondo la documentazione di HashMap le chiavi sono sempre uniche.

Se si aggiunge una chiave già esistente (collisione) nella hashmap, il vecchio valore verrà sostituito.

1

Un'hashmap generica viene in genere implementata come un array associativo, quindi diciamo che il tuo array ha N elementi, da 0 a N-1, quando vuoi aggiungere una nuova coppia (chiave, valore), cosa è dietro il scene è (solo concettualmente):

  1. index = hash (key) mod N
  2. array [index] = valore

Così, per costruzione, una chiave viene mappato ad uno ed un solo voce dell'array.

Si prega di notare che in realtà è un po 'più complessa di questo: sto ignorando sulle cose scopo, come la gestione delle collisioni, rimasticare, ecc, si può avere una buona idea generale qui https://en.wikipedia.org/wiki/Hash_table

1

Prova a guardare il Java API for Map che è interfaccia che implementa HashMap. La prima frase è:

Un oggetto che associa le chiavi ai valori. Una mappa non può contenere chiavi duplicate; ogni chiave può mappare al massimo un valore.

Problemi correlati