Differenza tra HashMap e Hashtable in Java
Contenuto
HashMap e Hashtable, entrambi sono usati per rappresentare a gruppo di oggetti che sono rappresentati in
Vediamo la tabella di confronto mostrata di seguito per apprendere alcune differenze tra HashMap e Hashtable.
- Tabella di comparazione
- Definizione
- Differenze chiave
- Somiglianze
- Conclusione
Tabella di comparazione
Base per il confronto | HashMap | tabella hash |
---|---|---|
Implementare / estendere | La classe HashMap implementa l'interfaccia Map ed estende una classe AbstractMap. | Hashtable estende la classe Dictionary Legacy, ma è stata riprogettata e ora implementa anche l'interfaccia Map. |
Sincronizzazione | HashMap non è sincronizzato e quindi l'oggetto HashMap non è sicuro. | Hashtable è sincronizzato e quindi l'oggetto di Hashtable è thread-safe. |
Chiavi / Valore | Una chiave può restituire Null solo una volta, ma un valore può restituire Null in qualsiasi numero di volte. | Una chiave non può restituire Null poiché viene utilizzata per ottenere il codice hash che verrà utilizzato come indice della tabella hash, né un valore può restituire Null. |
Capacità iniziale predefinita | La capacità iniziale predefinita di HashMap è 16. | La capacità iniziale predefinita di Hashtable è 11. |
di movimento | HashMap è attraversato da Iterator. | Come la classe Map Hashtable, inoltre, non supporta direttamente Iterator per l'attraversamento e quindi utilizza Enumerator. |
Definizione di HashMap
HashMap è una classe che implementa il Carta geografica interfaccia ed estende il AbstractMap la classe usa la tabella hash. L'oggetto di HashMap si riferisce a una raccolta / set di / * K rappresenta la chiave e V rappresenta il valore * / class HashMap Il primo costruttore è un costruttore predefinito che inizializza un oggetto vuoto di HashMap con una capacità predefinita di 16 e un rapporto di riempimento predefinito di 0,75. Il secondo costruttore inizializza la mappa hash con il valore di m. Il terzo costruttore crea una mappa hash con la capacità iniziale corrispondente al valore fornito nell'argomento "capacità". Il quarto costruttore inizializza la mappa hash con una capacità e un rapporto di riempimento forniti nei parametri. impariamo ora come alimentare le voci in una mappa hash. Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Giordania = 200} Nel codice sopra, puoi vedere che ho creato un oggetto HashMap vuoto hm con capacità iniziale predefinita e rapporto di riempimento predefinito. Quindi ho inserito quattro voci nella mappa hash usando il metodo put (K, V) che associa la chiave al valore. È possibile osservare che le voci non vengono modificate in una sequenza in cui vengono alimentate perché l'ordine di inserimento non è stato corretto. Ora, considera un caso in cui hai già una voce Hashtable è una classe che estende il Dizionario classe che è una classe legacy ed è stata riprogettata per implementare il Carta geografica interfaccia. Hashtable utilizza la tabella hash come struttura dati. Hashtable è simile a HashMap poiché qui anche l'oggetto di Hashtable si riferisce alla raccolta di voci in cui ogni voce è una coppia di / * K specifica la chiave e V specifica il valore associato alla chiave * / class Hashtable Nel codice sopra, il primo costruttore è un costruttore predefinito che crea un oggetto vuoto di una classe Hashtable, la sua dimensione predefinita è 11 e il rapporto di riempimento predefinito è 0,75. Il secondo costruttore crea una tabella hash con la dimensione corrispondente al valore fornito nel parametro "dimensione". Il terzo costruttore crea una tabella hash con una dimensione e un rapporto di riempimento forniti nel parametro. Il quarto costruttore inizializza la tabella hash con il valore m. Impariamo ora come inserire il file Hashtable ht = new Hashtable (); ht.put (nuovo hashCode (2), 275); ht.put (nuovo hashCode (12), 250); ht.put (nuovo hashCode (16), 150); ht.put (nuovo hashCode (8), 200); System.out.ln (ht); / * output * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Nel codice sopra, ho creato un oggetto vuoto di Hashtable e ho inserito quattro voci usando il metodo put (). All'interno del metodo put ho chiamato hashCode () che calcola e restituisce il valore del codice hash che fungerà da valore dell'indice per l'oggetto entry. Come puoi vedere non ho menzionato la dimensione della tabella hash, quindi per impostazione predefinita sarà 11. Anche qui, l'ordine di inserzione non viene conservato e, quindi, quando le voci ed non vengono visualizzate in sequenza, viene alimentato. HashMap ha prestazioni migliori in quanto i suoi oggetti non sono sincronizzati e più thread possono operare su di esso contemporaneamente, quindi è più veloce di Hashtable.Definizione di Hashtable
Somiglianze:
Conclusione: