Che cos'è Hashmap in Java? Spiegato con esempi
Pubblicato: 2021-07-02HashMap è una classe di raccolta in Java. Puoi usarlo per memorizzare coppie chiave e valore. Le sue prestazioni dipendono dalla capacità iniziale e dal fattore di carico. HashMap ha vari metodi che ti consentono di utilizzare la struttura dei dati della sua tabella hash.
Nell'articolo seguente, esploreremo cos'è HashMap e conosceremo i suoi vari costruttori attraverso esempi.
Sommario
Cos'è HashMap?
HashMap è una classe di raccolta basata su Map. Lo usiamo per memorizzare coppie chiave e valore. Indichi un HashMap Java come HashMap<K, V>, dove K sta per Key e V sta per Value.
HashMap è simile alla classe Hashtable. La differenza tra i due è che HashMap non è sincronizzato mentre Hashtable non lo è. Inoltre, a differenza di Hashtable, HashMap consente valori nulli e la chiave nulla.
Poiché HashMap non è una raccolta ordinata, non restituisce le chiavi e i valori nell'ordine in cui sono stati inseriti. Inoltre, HashMap non ordina le chiavi e i valori memorizzati. Se vuoi usare la classe HashMap e i suoi metodi, dovrai importare java.util.HashMap (o la sua superclasse).
HashMap offre una semplice implementazione dell'interfaccia Map di Java. È possibile accedere alle coppie chiave-valore archiviate tramite HashMap utilizzando un indice di un altro tipo (ad esempio un intero). Tieni presente che se utilizzi una chiave duplicata, questa sostituisce l'elemento della chiave pertinente. Inoltre, puoi utilizzare solo un oggetto chiave nullo; tuttavia, può esserci un numero qualsiasi di valori nulli.
HashMap implementa le interfacce Cloneable, Serializable, Map<K, V>. Estende la classe AbstractMap<K, V> e le sue sottoclassi dirette sono PrinterStateReasons e LinkedHashMap.
Caratteristiche di HashMap
Di seguito sono elencate le funzionalità principali di HashMap:
- È un componente di java.util.package.
- Puoi utilizzare valori duplicati, ma HashMap non consente chiavi duplicate. Significa che una chiave non può avere più valori, ma più chiavi possono avere un unico valore.
- È possibile utilizzare chiavi null solo una volta, ma è possibile utilizzare vari valori null.
- HashMap non fornisce garanzie per quanto riguarda l'ordine della mappa. Quindi, non garantisce se l'ordine rimarrà costante.
- HashMap è molto simile a Hashtable, con l'unica differenza che HashMap non è sincronizzato.
- HashMap implementa un'interfaccia serializzabile e clonabile.
Costruttori HashMap
Ci sono quattro costruttori in HashMap:
1. HashMap()
HashMap() è il costruttore predefinito che crea un'istanza con un fattore di carico di 0,75 e una capacità iniziale di 16.
Esempio :
// Mostra come funziona il costruttore HashMap()
importa java.io.*;
importa java.util.*;
classe AddElementsToHashMap {
public static void main(String args[])
{
// Non devi menzionare il
// Tipo generico due volte
HashMap<Integer, String> hm1 = nuova HashMap<>();
// Utilizzo di Generics per inizializzare HashMap
HashMap<Intero, Stringa> hm2
= new HashMap<Intero, Stringa>();
// Usa il metodo put per aggiungere qualsiasi elemento
hm1.put(1, “A”);
hm1.put(2, “B”);
hm1.put(3, “C”);
hm2.put(4, “D”);
hm2.put(5, “E”);
hm2.put(6, “F”);
System.out.println("I risultati di hm1 sono: "
+ hm1);
System.out.println("I risultati di HashMap hm2 sono: "
+ hm2);
}
}
Uscita :
I risultati di hm1 sono: {1=A, 2=B, 3=C}
I risultati di hm2 sono: {4=D, 5=E, 6=F}
2. HashMap(int initialCapacity)
HashMap(int initialCapacity) creerebbe un'istanza con carico 0,75 e una capacità iniziale specifica.
Esempio :
// Mostra come funziona il costruttore HashMap(int initialCapacity).
importa java.io.*;
importa java.util.*;
classe AddElementsToHashMap {
public static void main(String args[])
{
// Non devi menzionare il
// Tipo generico due volte
HashMap<Integer, String> hm1 = nuova HashMap<>(10);
// Utilizzo di Generics per inizializzare HashMap
HashMap<Intero, Stringa> hm2
= new HashMap<Intero, Stringa>(2);
// Usa il metodo put per aggiungere qualsiasi elemento
hm1.put(1, “A”);
hm1.put(2, “B”);
hm1.put(3, “C”);
hm2.put(4, “D”);
hm2.put(5, “E”);
hm2.put(6, “F”);
System.out.println("I risultati di hm1 sono: "
+ hm1);
System.out.println("I risultati di HashMap hm2 sono: "
+ hm2);
}
}
Uscita :
I risultati di hm1 sono: {1=A, 2=B, 3=C}
I risultati di hm2 sono: {4=D, 5=E, 6=F}
3. HashMap(int initialCapacity, float loadFactor)
HashMap(int initialCapacity, float loadFactor) genera un'istanza con un fattore di carico e una capacità iniziale specifici.
Esempio :
// Mostra come funziona il costruttore HashMap(int initialCapacity, float loadFactor).
importa java.io.*;
importa java.util.*;
classe AddElementsToHashMap {
public static void main(String args[])
{
// Non devi menzionare il
// Tipo generico due volte
HashMap<Intero, Stringa> hm1
= nuova HashMap<>(5, 0.75f);
// Utilizzo di Generics per inizializzare HashMap
HashMap<Intero, Stringa> hm2
= new HashMap<Intero, Stringa>(3, 0.5f);
// Usa il metodo put per aggiungere elementi
hm1.put(1, “A”);
hm1.put(2, “B”);
hm1.put(3, “C”);
hm2.put(4, “D”);
hm2.put(5, “E”);
hm2.put(6, “F”);
System.out.println("I risultati di hm1 sono: "
+ hm1);
System.out.println("I risultati di HashMap hm2 sono: "
+ hm2);
}
}
Uscita :
I risultati di hm1 sono: {1=A, 2=B, 3=C}
I risultati di hm2 sono: {4=D, 5=E, 6=F}
4. HashMap (mappa della mappa)
HashMap(Map map) creerebbe un'istanza con le stesse mappature della mappa specificata.
Esempio :
// Mostra come funziona il costruttore HashMap(Map map).
importa java.io.*;
importa java.util.*;
classe AddElementsToHashMap {
public static void main(String args[])
{
// Non devi menzionare il
// Tipo generico due volte
Map<Integer, String> hm1 = new HashMap<>();
// Utilizzo di Generics per inizializzare HashMap
HashMap<Intero, Stringa> hm2
= new HashMap<Integer, String>(hml);
// Usa il metodo put per aggiungere qualsiasi elemento
hm1.put(1, “A”);
hm1.put(2, “B”);
hm1.put(3, “C”);
hm2.put(4, “D”);
hm2.put(5, “E”);
hm2.put(6, “F”);
System.out.println("I risultati di hm1 sono: "
+ hm1);
System.out.println("I risultati di HashMap hm2 sono: "
+ hm2);
}
}
Uscita :
I risultati di hm1 sono: {1=A, 2=B, 3=C}
I risultati di hm2 sono: {4=D, 5=E, 6=F}
Ulteriori informazioni su Java
Java ha molte classi oltre ad HashMap. Imparare da soli il nocciolo della questione di ciascuna di queste classi, i loro usi e l'integrazione in Java è piuttosto impegnativo. Il modo migliore per affrontare questo processo è seguire un corso di informatica.
Seguire un corso professionale ti consentirà di padroneggiare le competenze e i concetti necessari attraverso un curriculum strutturato. Inoltre, tali corsi offrono un'esperienza di apprendimento coinvolgente facilitata da video, sessioni dal vivo e lezioni online che facilitano la comprensione dei fondamenti teorici.
Puoi dare un'occhiata al nostro programma di Master of Science in Computer Science offerto in associazione con LJMU (Liverpool John Moores University, Regno Unito) e IIIT-B (International Institute of Information Technology, India). Il corso copre oltre 500 ore di contenuti, oltre 10 lezioni dal vivo e oltre 30 casi di studio.
Questo corso di 19 mesi promette un'esperienza di apprendimento globale e altamente orientata al valore. Il più grande valore aggiunto sta nel fatto che puoi connetterti e interagire con colleghi di tutto il mondo. upGrad si vanta di avere oltre 40.000 studenti globali pagati sparsi in oltre 85 paesi. Di conseguenza, sei esposto a nuove culture, nuove opinioni e nuove prospettive che ampliano la tua visione generale. Non solo, sei formato da mentori esperti di LJMU e IIIT-B che forniscono assistenza dedicata e personalizzata per aiutarti a risolvere i tuoi dubbi.
Insieme a questi vantaggi, questo programma ti fornirà assistenza professionale a 360 gradi che include tutoraggio del settore, opportunità di networking e molto altro.
Conclusione
In questo articolo, abbiamo appreso cos'è HashMap, i suoi diversi costruttori e come implementarli attraverso esempi. HashMap ha un sacco di applicazioni in Java: puoi usare HashMap per aggiungere elementi, rimuoverli e gestirli come richiesto.
Cosa ne pensi di questa guida su HashMap? Condividili nella sezione commenti qui sotto.