Come usare hashmap in java

Come usare hashmap in java
Prima di sapere come usare un hashmap in Java, il lettore deve sapere cos'è un hashmap. Prendi in considerazione le seguenti coppie chiave/valore di frutta e loro colori: Apple rossa => rosso
Banana => giallo
limone => giallo pallido
lime => verde giallo
Kivi => verde
Avocado => verde
Uva => viola
FIG => viola
=> - - - - -
=> - - - - -
=> - - - - -

La colonna a sinistra ha i tasti e la colonna a destra ha i valori corrispondenti. Si noti che i frutti, il kivi e l'avocado hanno lo stesso colore, verde. Inoltre, i frutti, l'uva e i fichi hanno lo stesso colore, viola. Alla fine dell'elenco, tre posizioni stanno aspettando i propri colori. Queste posizioni non hanno frutti corrispondenti; In altre parole, queste tre posizioni non hanno chiavi corrispondenti.

Tutte le posizioni, riempite o meno, a destra, sono chiamate secchi. Per ogni valore, c'è una chiave. Le chiavi sono uniche. I valori non devono essere univoci. Questa è una relazione molti-to-one.

Ciò che viene archiviato nella tabella è la colonna giusta. Cioè, ciò che viene archiviato nella tabella sono i valori. Le chiavi non devono essere archiviate. La chiave viene inviata come argomento a una funzione chiamata funzione hash per arrivare a un valore. La funzione hash produce l'indice corrispondente associato a un valore particolare.

Qualsiasi struttura adatta a tutte le descrizioni di cui sopra è chiamata hash. Con l'hashmap in Java, le chiavi sono di un tipo di oggetto e i valori sono di un altro tipo di oggetto. Può esserci una chiave null e può esserci più di un valore nullo.

La dimensione di un hashmap è il numero di coppie chiave/valore (voci). La capacità di un hashmap è il numero di secchi, riempito o meno. La capacità dovrebbe essere sempre maggiore della dimensione.

Con l'introduzione di cui sopra, il lettore può ora imparare a usare un hashmap in Java.

Contenuto dell'articolo

  • Costruzione
  • Comprese le coppie chiave/valore
  • Dimensioni di hashmap
  • Leggere l'hashmap
  • Modifica dell'hashmap
  • Conclusione

Costruzione

L'hashmap è una classe da cui è possibile creare un oggetto hashmap. La creazione di un oggetto da una classe è costruire l'oggetto. Esistono 4 modi per costruire un hashmap in Java.

Fattore di carico

Il fattore di carico è il numero di coppie di tasti/valore diviso per il numero di secchi.

Hashmap ()

Questo metodo del costruttore creerebbe un hashmap della capacità 16 e del fattore di carico 0.75. Ciò significa che il numero di secchi sarà 16 (e vuoto) e il fattore di carico predefinito è 0.75. Dopo la creazione dell'hashmap, verranno incluse le coppie chiave/valore. In questo caso, quando il numero di coppie chiave/valore raggiunge 12, a 12/16 = 0.75, l'hashmap si riavvia automaticamente. Ciò significa che aumenterà automaticamente il numero di secchi a 32 (raddoppio). Il seguente codice mostra come creare un oggetto hashmap usando questo costruttore:

Importa Java.util.*;
class theclass
public static void main (string [] args)
Hashmap hm = new hashmap ();

La classe hashmap è in java.pacchetto util. Per questo codice, le chiavi sarebbero stringhe e i valori sarebbero anche stringhe.

Hashmap (int inizialitycapacity)

Ciò consente al programmatore di iniziare con una capacità diversa ma ancora con un fattore di carico di 0.75. Illustrazione:

Importa Java.util.*;
class theclass
public static void main (string [] args)
Hashmap hm = new hashmap (20);

Quindi, l'oggetto Hasmap qui inizia con 20 secchi vuoti. Qui le chiavi sono numeri interi. Differiscono dagli indici dell'array nel senso che il primo indice non è necessariamente zero. Inoltre, gli indici non sono contigui. Ad esempio, il primo indice forse 20; Il prossimo è 35, quello dopo 52, ecc.

Nota: con l'hashmap, l'ordinamento delle coppie chiave/valore non viene mantenuta. Cioè, se un set di coppie chiave/valore è incluso in un ordine, sulla visualizzazione del contenuto, l'ordine sarà diverso, sebbene tutte le coppie di tasti/valore incluse sarebbero ancora lì.

Le coppie chiave/valore per l'hashmap sono meglio definite mapping.

HashMap (int inizialitycapacity, float caryfactor)

Qui, anche il fattore di carico è citato. Il fattore di carico è un tipo di galleggiante e non un tipo intero. Qui, un fattore di carico diverso da 0.75 è citato. Ci sono vantaggi e svantaggi per avere un fattore di carico che differisce da 0.75 - Vedi più tardi. Illustrazione:

Importa Java.util.*;
class theclass
public static void main (string [] args)
Hashmap hm = new hashmap (20,0.62f);

Nota l'uso di "F" come suffisso per il fattore di carico.

Hashmap (mappa m)
Questo costruttore creerà un hashmap da una mappa che già esiste - vedi più tardi.

Comprese le coppie chiave/valore

put (K Key, V Value)
Questo metodo mette in relazione un valore particolare con una chiave particolare. La chiave viene effettivamente eseguita in un indice che è direttamente associato al valore. Tuttavia, è il programmatore o l'utente che decide sul valore e sulla chiave. Il seguente esempio crea un Hasmap, HM e include tutte le coppie di tasti/valore e secchi vuoti dall'alto:

Importa Java.util.*;
class theclass
public static void main (string [] args)
Hashmap hm = new hashmap (11);
hm.put ("mela rossa", "rosso");
hm.put ("banana", "giallo");
hm.put ("limone", "giallo pallido");
hm.put ("lime", "giallo verde");
hm.put ("kivi", "verde");
hm.put ("avocado", "verde");
hm.put ("uva", "viola");
hm.put ("fig", "viola");

La capacità è 11. Il numero di coppie chiave/valore è 8. Questo significa che la dimensione è 8. Quindi, il fattore di carico effettivo è 8/11 = 0.73f. Il numero di secchi vuoti è 11 - 8 = 3.

putIfabsent (chiave K, valore V)
Ciò include la coppia chiave/valore se la chiave non esiste già nell'hashmap. In questo caso, il valore di ritorno è nullo. Se la chiave esiste già, nulla cambia e il vecchio valore per la chiave viene restituito. Se il seguente codice viene aggiunto in fondo al codice sopra (in main ()), l'output sarebbe nullo:

String V = HM.Putifabsent ("Watermelon", "Green");
Sistema.fuori.println (v);

Nota: put (K Key, Value) sposterebbe la coppia chiave/valore per la chiave in questione che è già lì, dando efficacemente un nuovo valore per la chiave.

Dimensioni di hashmap

La dimensione dell'hashmap è il numero di coppie chiave/valore.

misurare()
La seguente dichiarazione restituirà le dimensioni dell'hashmap:

int sz = hm.misurare();

è vuoto()
Questo metodo, restituisce vero se l'hashmap non contiene mapping di valore chiave o falso altrimenti. Esempio:

booleano bl = hm.è vuoto();
Sistema.fuori.println (bl);

Un hashmap vuoto può avere secchi vuoti.

Leggere l'hashmap

Ottieni (tasto oggetto)
Restituisce (copie fuori) il valore corrispondente alla chiave; o restituisce null se non esiste un valore corrispondente. Esempio:

Stringa str = hm.get ("banana");
Sistema.fuori.println (str);

contiene tastiera (chiave oggetto)
Restituisce vero se c'è una mappatura per quella particolare chiave; falso altrimenti. Esempio:

booleano bl = hm.contienekey ("banana");

contiene Value (valore dell'oggetto)
Restituisce vero se c'è una mappatura per quel valore; falso altrimenti. Esempio:

booleano bl = hm.contieneValue ("verde");

mazzo di chiavi()
Questo metodo restituisce tutte le chiavi delle coppie chiave/valore. Codice di esempio:

Imposta st = hm.mazzo di chiavi();
per (String Val: St)
Sistema.fuori.stampa (val + ",");
Sistema.fuori.println ();

Si noti che l'oggetto di ritorno è un set. Se viene utilizzato l'hashmap originale sopra, l'output sarebbe:

limone, kivi, fico, uva, lime, avocado, mela rossa, banana,

Si noti che l'ordine non è l'ordine in cui sono state incluse le chiavi.

valori()
Questo metodo restituisce una raccolta di tutti i valori nell'hashmap. Codice di esempio:

Collezione cl = hm.valori();
per (String Val: CL)
Sistema.fuori.stampa (val + ",");
Sistema.fuori.println ();

Si noti che l'oggetto di ritorno è una raccolta. Se viene utilizzato l'hashmap originale sopra, l'output sarebbe:

Giallo pallido, verde, viola, viola, giallo-verde, verde, rosso, giallo,

Si noti che l'ordine non è l'ordine in cui sono stati inclusi i valori.

EntrySet ()
Ciò restituisce tutte le coppie di tasti/valore, ma il programmatore deve separare ciascuna chiave dal valore corrispondente. Codice di esempio:

Impostato stm = hm.entryset ();
per (mappa.Entrata KV: STM)
Sistema.fuori.println (kv.getKey () + "=>" + kv.getValue ());

Se viene utilizzato l'hashmap originale sopra, l'output sarebbe:

limone => giallo pallido
Kivi => verde
FIG => viola
Uva => viola
lime => verde giallo
Avocado => verde
Apple rossa => rosso
Banana => giallo

Si noti che l'ordine non è l'ordine in cui sono state incluse le coppie chiave/valore.

Modifica dell'hashmap

put (K Key, V Value)
Il metodo put () è simile al metodo putifabsent () in quanto se la chiave esiste già, il vecchio valore viene restituito e se la chiave non esiste già, NULL viene restituito. Non dimenticare che put () sostituisce il vecchio valore se la chiave esiste già. Se la chiave non esiste già, put () include la nuova voce (coppia chiave/valore).

Sostituisci (chiave K, valore V)
Per una chiave che è già in atto, questo metodo viene utilizzato per sostituire il valore per la chiave corrispondente. L'hashmap è una struttura molti-to-one. Un codice di esempio per l'hashmap sopra è:

String V = HM.sostituire ("banana", "bianco");
Sistema.fuori.println (v);
Stringa str = hm.get ("banana");
Sistema.fuori.println (str);

L'output è:

giallo
bianco

Il metodo sostituito () restituisce il vecchio valore. Se la chiave non esiste, restituisce null e nulla viene sostituito.

Sostituire (K Key, V OldValue, V NewValue)
Ciò consente la sostituzione di un valore particolare di cui è a conoscenza il programmatore. Restituisce vero se è riuscito e falso se non lo faceva. Il codice di esempio per l'oggetto hashmap sopra è:

booleano bl = hm.sostituire ("uva", "viola", "marrone");
Sistema.fuori.println (bl);

Rimuovi (tasto oggetto)
Questo rimuove la coppia chiave/valore mappata dalla chiave. Restituisce il valore corrispondente rimosso. Restituisce null se la chiave non era presente. Il codice di esempio per l'hashmap sopra è:

String V = HM.rimuovere ("banana");
Sistema.fuori.println (v);

Rimuovi (tasto oggetto, valore dell'oggetto)
Ciò consente la rimozione di una voce (coppia chiave/valore) per un valore particolare di cui è a conoscenza il programmatore. Restituisce vero se è riuscito e falso se non lo faceva. Il codice di esempio per l'oggetto hashmap sopra è:

booleano bl = hm.rimuovere ("avocado", "verde");
Sistema.fuori.println (bl);

Conclusione

Un array può essere considerato come una mappatura degli indici a valori (di un particolare tipo). È necessario utilizzare un hashmap quando è necessaria la mappatura di un tipo di oggetto a un altro tipo di oggetto. In questo modo, ci sono coppie chiave/valore. Un hash è una struttura di dati in cui il numero di valori è limitato, ma il numero di possibili chiavi è superiore al numero di possibili valori. E quindi le chiavi devono essere hash per arrivare ai valori. Java hashmap per la sua funzione di hash implicita è stata presentata sopra. Il programmatore può scrivere la sua funzione di hashing (mappatura). Tuttavia, questo è un argomento per un'altra volta.

Chrys