logo

HashMap v Javi

V Javi, HashMap je del Javine zbirke od Jave 1.2. Ta razred najdemo v java.util paket. Zagotavlja osnovno izvedbo vmesnika Map Java. HashMap v Javi shranjuje podatke v parih (Key, Value), do njih pa lahko dostopate z indeksom druge vrste (npr. Integer). En predmet se uporablja kot ključ (indeks) za drug objekt (vrednost). Če poskusite vstaviti podvojeni ključ v HashMap, bo zamenjal element ustreznega ključa.

Kaj je HashMap?

Java HashMap je podoben HashTable , vendar ni sinhroniziran. Omogoča tudi shranjevanje ničelnih ključev, vendar mora obstajati le en predmet ničelnega ključa in lahko je poljubno število ničelnih vrednosti. Ta razred ne daje nobenih jamstev glede vrstnega reda zemljevida. Če želite uporabiti ta razred in njegove metode, morate uvoziti java.util.HashMap paket ali njegov nadrazred.

Kazalo



Primeri Java HashMap

Spodaj je implementacija primera Java HashMap:

Java




// Java program to illustrate HashMap class> // of java.util package> // Importing HashMap class> import> java.util.HashMap;> // Main class> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create an empty hash map by declaring object> >// of string and integer type> >HashMap map =>new> HashMap();> >// Adding elements to the Map> >// using standard put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> >// Print size and content of the Map> >System.out.println(>'Size of map is:- '> >+ map.size());> >// Printing elements in object of Map> >System.out.println(map);> >// Checking if a key is present and if> >// present, print value by passing> >// random element> >if> (map.containsKey(>'vishal'>)) {> >// Mapping> >Integer a = map.get(>'vishal'>);> >// Printing value for the corresponding key> >System.out.println(>'value for key'> >+>' 'vishal' is:- '> + a);> >}> >}> }>

>

>

Izhod

Size of map is:- 3 {vaibhav=20, vishal=10, sachin=30} value for key 'vishal' is:- 10>

HashMap Izjava

public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>

Parametri:

Zahteva dva parametra, in sicer:

  • Vrsta ključev, ki jih vzdržuje ta zemljevid
  • Vrsta preslikanih vrednosti

Opomba: K eys in value ne moreta biti primitivni podatkovni tip. Ključ v Hashmapu je veljaven, če se izvaja metoda hashCode() in equals(). , mora biti tudi nespremenljiv (nespremenljiv predmet po meri), tako da hashcode in enakost ostaneta nespremenjeni. Vrednost v hashmapu je lahko kateri koli ovojni razred, predmeti po meri, nizi, kateri koli referenčni tip ali celo null.

Na primer: Hashmap ima lahko matriko kot vrednost, ne pa tudi kot ključ.

HashMap v Javi izvaja Serializable , Klonirati , Zemljevid vmesniki.Java HashMap razširja AbstractMap razred. Neposredni podrazredi so LinkedHashMap in PrinterStateReasons .

Hierarhija Java HashMap

Hierarhija HashMap v Javi

Značilnosti Java HashMap

HashMap je podatkovna struktura, ki se uporablja za shranjevanje in pridobivanje vrednosti na podlagi ključev. Nekatere ključne značilnosti hashmapa vključujejo:

  • Hiter dostopni čas : HashMaps zagotavlja stalen časovni dostop do elementov, kar pomeni, da je iskanje in vstavljanje elementov zelo hitro, običajno O(1) časovna kompleksnost.
  • Uporablja funkcijo zgoščevanja : HashMaps uporablja funkcijo zgoščevanja za preslikavo ključev v indekse v matriki. To omogoča hitro iskanje vrednosti na podlagi ključev.
  • Shranjuje pare ključ-vrednost: Vsak element v HashMap je sestavljen iz para ključ-vrednost. Ključ se uporablja za iskanje povezane vrednosti.
  • Podpira ničelne ključe in vrednosti : HashMaps omogoča ničelne vrednosti in ključe. To pomeni, da lahko ničelni ključ uporabimo za shranjevanje vrednosti, ničelno vrednost pa lahko povežemo s ključem.
  • Ni naročeno: HashMaps niso urejeni, kar pomeni, da se vrstni red dodajanja elementov na zemljevid ne ohrani. Vendar je LinkedHashMap različica HashMap, ki ohranja vrstni red vstavljanja.
  • Omogoča dvojnike : HashMaps omogoča podvojene vrednosti, ne pa tudi podvojenih ključev. Če je dodan podvojen ključ, se prejšnja vrednost, povezana s ključem, prepiše.
  • Niti niso varne : HashMap ni varen za niti, kar pomeni, da lahko, če več niti dostopa do istega hashmapa hkrati, pride do nedoslednosti podatkov. Če je potrebna varnost niti, je mogoče uporabiti ConcurrentHashMap.
  • Zmogljivost in faktor obremenitve : HashMaps ima kapaciteto, kar je število elementov, ki jih lahko vsebuje, in faktor obremenitve, ki je merilo, kako poln je lahko hashmap, preden se mu spremeni velikost.

Ustvarjanje HashMap v Javi

Naj razumemo, kako lahko ustvarimo HashMap v Javi s primerom, omenjenim spodaj:

Java




// Java Program to Create> // HashMap in Java> import> java.util.HashMap;> // Driver Class> public> class> ExampleHashMap {> >// main function> >public> static> void> main(String[] args) {> > >// Create a HashMap> >HashMap hashMap =>new> HashMap();> > >// Add elements to the HashMap> >hashMap.put(>'John'>,>25>);> >hashMap.put(>'Jane'>,>30>);> >hashMap.put(>'Jim'>,>35>);> > >// Access elements in the HashMap> >System.out.println(hashMap.get(>'John'>));> >// Output: 25> > >// Remove an element from the HashMap> >hashMap.remove(>'Jim'>);> > >// Check if an element is present in the HashMap> >System.out.println(hashMap.containsKey(>'Jim'>));> >// Output: false> > >// Get the size of the HashMap> >System.out.println(hashMap.size());> >// Output: 2> >}> }>

>

>

Izhod

25 false 2>

Konstruktorji Java HashMap

HashMap ponuja 4 konstruktorje in modifikator dostopa vsakega je javen, ki so navedeni na naslednji način:

  1. HashMap()
  2. HashMap(int initialCapacity)
  3. HashMap(int initialCapacity, float loadFactor)
  4. HashMap (zemljevid zemljevida)

Zdaj razpravljamo o zgornjih konstruktorjih enega za drugim skupaj z implementacijo istih s pomočjo čistih programov Java.

1. HashMap()

Je privzeti konstruktor, ki ustvari primerek HashMap z začetno zmogljivostjo 16 in faktorjem obremenitve 0,75.

Sintaksa:

HashMap hm = new HashMap();>

Primer

Java




razvrščanje v arraylist v Javi
// Java program to Demonstrate the HashMap() constructor> // Importing basic required classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap();> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap();> >// Adding elements using put method> >// Custom input elements> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Print and display mapping of HashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Print and display mapping of HashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Izhod

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

2. HashMap(int initialCapacity)

Ustvari primerek HashMap z a določena začetna zmogljivost in faktor obremenitve 0,75.

Sintaksa:

HashMap hm = new HashMap(int initialCapacity);>

Primer

Java




// Java program to Demonstrate> // HashMap(int initialCapacity) Constructor> // Importing basic classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> AddElementsToHashMap {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap(>10>);> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap(>2>);> >// Adding elements to object of HashMap> >// using put method> >// HashMap 1> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >// HashMap 2> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Printing elements of HashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Printing elements of HashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Izhod

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

3. HashMap(int initialCapacity, float loadFactor)

Ustvari primerek HashMap z določeno začetno zmogljivostjo in določenim faktorjem obremenitve.

Sintaksa:

HashMap hm = new HashMap(int initialCapacity, float loadFactor);>

Primer

Java




// Java program to Demonstrate> // HashMap(int initialCapacity,float loadFactor) Constructor> // Importing basic classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the generic type twice> >HashMap hm1> >=>new> HashMap(>5>,>0>.75f);> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap(>3>,>0>.5f);> >// Add Elements using put() method> >// Custom input elements> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Print and display elements in object of hashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Print and display elements in object of hashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Izhod

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

4. HashMap (zemljevid zemljevida)

Ustvari primerek HashMap z enakimi preslikavami kot navedeni zemljevid.

HashMap hm = nov HashMap(Map zemljevid);

Java




// Java program to demonstrate the> // HashMap(Map map) Constructor> import> java.io.*;> import> java.util.*;> class> AddElementsToHashMap {> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >Map hm1 =>new> HashMap();> >// Add Elements using put method> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >// Initialization of a HashMap> >// using Generics> >HashMap hm2> >=>new> HashMap(hm1);> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> > >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Izhod

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {1=one, 2=two, 3=three}>

Izvajanje različnih operacij na HashMap

1. Dodajanje elementov v HashMap v Javi

Da bi dodali element na zemljevid, lahko uporabimo daj() metoda. Vendar se vrstni red vstavljanja ne ohrani v Hashmapu. Interno se za vsak element ustvari ločena zgoščena vrednost in elementi se indeksirajo na podlagi te zgoščene vrednosti, da je učinkovitejša.

Java




// Java program to add elements> // to the HashMap> import> java.io.*;> import> java.util.*;> class> AddElementsToHashMap {> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap();> >// Initialization of a HashMap> >// using Generics> >HashMap hm2> >=>new> HashMap();> >// Add Elements using put method> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> >hm2.put(>1>,>'Geeks'>);> >hm2.put(>2>,>'For'>);> >hm2.put(>3>,>'Geeks'>);> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Izhod

Mappings of HashMap hm1 are : {1=Geeks, 2=For, 3=Geeks} Mapping of HashMap hm2 are : {1=Geeks, 2=For, 3=Geeks}>

2. Spreminjanje elementov v HashMap v Javi

Po dodajanju elementov, če želimo spremeniti element, lahko to storimo tako, da znova dodamo element z daj() metoda. Ker so elementi na zemljevidu indeksirani s pomočjo ključev, lahko vrednost ključa spremenimo tako, da preprosto vstavimo posodobljeno vrednost za ključ, ki ga želimo spremeniti.

Java




// Java program to change> // elements of HashMap> import> java.io.*;> import> java.util.*;> class> ChangeElementsOfHashMap {> >public> static> void> main(String args[])> >{> >// Initialization of a HashMap> >HashMap hm> >=>new> HashMap();> >// Change Value using put method> >hm.put(>1>,>'Geeks'>);> >hm.put(>2>,>'Geeks'>);> >hm.put(>3>,>'Geeks'>);> >System.out.println(>'Initial Map '> + hm);> >hm.put(>2>,>'For'>);> >System.out.println(>'Updated Map '> + hm);> >}> }>

>

>

Izhod

Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. Odstranjevanje elementa iz Java HashMap

Za odstranitev elementa iz zemljevida lahko uporabimo Odstrani() metoda. Ta metoda prevzame vrednost ključa in odstrani preslikavo za ključ s te preslikave, če je prisotna v preslikavi.

Java




polja v Javi
// Java program to remove> // elements from HashMap> import> java.io.*;> import> java.util.*;> class> RemoveElementsOfHashMap{> >public> static> void> main(String args[])> >{> >// Initialization of a HashMap> >Map hm> >=>new> HashMap();> >// Add elements using put method> >hm.put(>1>,>'Geeks'>);> >hm.put(>2>,>'For'>);> >hm.put(>3>,>'Geeks'>);> >hm.put(>4>,>'For'>);> >// Initial HashMap> >System.out.println(>'Mappings of HashMap are : '> >+ hm);> >// remove element with a key> >// using remove method> >hm.remove(>4>);> >// Final HashMap> >System.out.println(>'Mappings after removal are : '> >+ hm);> >}> }>

>

>

Izhod

Mappings of HashMap are : {1=Geeks, 2=For, 3=Geeks, 4=For} Mappings after removal are : {1=Geeks, 2=For, 3=Geeks}>

4. Prehod Java HashMap

Z vmesnikom Iterator lahko prečkamo katero koli strukturo ogrodja zbirke. Ker iteratorji delujejo z eno vrsto podatkov, uporabljamo Entry za razrešitev dveh ločenih vrst v združljivo obliko. Nato z uporabo metode next() natisnemo vnose HashMap.

Java




// Java program to traversal a> // Java.util.HashMap> import> java.util.HashMap;> import> java.util.Map;> public> class> TraversalTheHashMap {> >public> static> void> main(String[] args)> >{> >// initialize a HashMap> >HashMap map =>new> HashMap();> >// Add elements using put method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> >// Iterate the map using> >// for-each loop> >for> (Map.Entry e : map.entrySet())> >System.out.println(>'Key: '> + e.getKey()> >+>' Value: '> + e.getValue());> >}> }>

>

>

Izhod

Key: vaibhav Value: 20 Key: vishal Value: 10 Key: sachin Value: 30>

Kompleksnost HashMap v Javi

HashMap zagotavlja konstantno časovno kompleksnost za osnovne operacije, get in put, če je zgoščevalna funkcija pravilno napisana in pravilno razprši elemente med vedri. Iteracija prek HashMap je odvisna od zmogljivosti HashMap in števila parov ključ-vrednost. V bistvu je neposredno sorazmeren z zmogljivostjo + velikostjo. Kapaciteta je število veder v HashMap. Zato ni dobra ideja, da na začetku obdržite veliko veder v HashMap.

Metode

Časovna zapletenost

Kompleksnost prostora

Dodajanje elementov v HashMap

O(1)

O(N)

Odstranjevanje elementa iz HashMap

O(1)

O(N)

Ekstrahiranje elementa iz Jave

O(1)

O(N)

Pomembne funkcije HashMap

Za dostop do vrednosti je treba poznati njen ključ. HashMap je znan kot HashMap, ker uporablja tehniko, imenovano Hashing. Zgoščevanje je tehnika pretvorbe velikega niza v majhen niz, ki predstavlja isti niz. Krajša vrednost pomaga pri indeksiranju in hitrejšem iskanju. HashSet interno uporablja tudi HashMap.
Nekaj ​​pomembnih funkcij HashMapa je:

  • HashMap je del paketa java.util.
  • HashMap razširja abstraktni razred AbstractMap, ki zagotavlja tudi nepopolno implementacijo vmesnika Map.
  • Izvaja tudi a Klonirati in Serializable vmesniki. K in V v zgornji definiciji predstavljata ključ oziroma vrednost.
  • HashMap ne dovoljuje podvojenih ključev, dovoljuje pa podvojene vrednosti. To pomeni, da en sam ključ ne more vsebovati več kot 1 vrednosti, več kot 1 ključ pa lahko vsebuje eno vrednost.
  • HashMap dovoljuje tudi ničelni ključ, vendar samo enkrat in večkratne ničelne vrednosti.
  • Ta razred ne daje nobenih jamstev glede vrstnega reda zemljevida; še posebej pa ne zagotavlja, da bo vrstni red skozi čas ostal nespremenjen. Približno je podoben HashTable, vendar ni sinhroniziran.

Notranja struktura HashMap

Interno HashMap vsebuje matriko Node in vozlišče je predstavljeno kot razred, ki vsebuje 4 polja:

  1. int hash
  2. K ključ
  3. V vrednost
  4. Vozlišče naslednje

Vidimo lahko, da vozlišče vsebuje referenco na svoj objekt. Torej je povezan seznam.

HashMap:

Java HashMap

Vozlišče:

node_hash_map

Zmogljivost HashMap

Učinkovitost HashMap je odvisna od dveh parametrov, ki sta poimenovana na naslednji način:

  1. Začetna zmogljivost
  2. Faktor obremenitve

1. Začetna zmogljivost – To je zmogljivost HashMap v času njegovega ustvarjanja (To je število veder, ki jih HashMap lahko vsebuje, ko je HashMap instanciran). V Javi je na začetku 2^4=16, kar pomeni, da lahko vsebuje 16 parov ključ-vrednost.

2. Faktor obremenitve – To je odstotna vrednost zmogljivosti, po kateri je treba povečati zmogljivost Hashmapa (to je odstotek polnjenja veder, po katerem se izvede ponovno razprševanje). V Javi je privzeto 0,75f, kar pomeni, da se ponovitev izvede po zapolnitvi 75 % zmogljivosti.

3. Prag – Je produkt faktorja obremenitve in začetne zmogljivosti. V Javi je privzeto (16 * 0,75 = 12). To pomeni, da se Rehashing izvede po vstavitvi 12 parov ključ-vrednost v HashMap.

4. Ponavljanje – To je postopek podvojitve zmogljivosti HashMapa, potem ko ta doseže svoj prag. V Javi HashMap še naprej prekriva (privzeto) v naslednjem zaporedju – 2^4, 2^5, 2^6, 2^7, …. tako naprej

Če je začetna zmogljivost višja, se ponovna obdelava ne bo nikoli izvedla. Toda ohranjanje višje stopnje poveča časovno zapletenost ponovitve. Zato ga je treba izbrati zelo pametno, da povečate učinkovitost. Za nastavitev začetne zmogljivosti je treba upoštevati pričakovano število vrednosti. Najbolj splošno zaželena vrednost faktorja obremenitve je 0,75, kar zagotavlja dobro razmerje med stroški časa in prostora. Vrednost faktorja obremenitve se giblje med 0 in 1.

Opomba: Od Jave 8 naprej je Java začela uporabljati Self Balancing BST namesto povezanega seznama za veriženje. Prednost samouravnoteženega bst je, da dobimo v najslabšem primeru (ko se vsak ključ preslika v isto režo) čas iskanja O(Log n).

Sinhroniziran HashMap

Kot rečeno, HashMap ni sinhroniziran, kar pomeni, da lahko do njega dostopa več niti hkrati. Če več niti dostopa do tega razreda hkrati in vsaj ena nit strukturno manipulira z njim, potem ga je treba sinhronizirati zunaj. To se izvede s sinhronizacijo nekega predmeta, ki enkapsulira zemljevid. Če tak predmet ne obstaja, ga je mogoče oviti okoli Collections.synchronizedMap(), da se HashMap sinhronizira in prepreči nenameren nesinhroniziran dostop. Kot v naslednjem primeru:

arraylist
Map m = Collections.synchronizedMap(new HashMap(...));>

Zdaj je Zemljevid m sinhroniziran. Iteratorji tega razreda so neuspešni, če se po izdelavi iteratorja izvede kakršna koli sprememba strukture na kakršen koli način, razen prek metode odstranjevanja iteratorja. V primeru napake iteratorja bo vrgel ConcurrentModificationException.

Aplikacije HashMap:

HashMap je predvsem implementacija zgoščevanja. Uporaben je, ko potrebujemo učinkovito izvedbo operacij iskanja, vstavljanja in brisanja. Oglejte si aplikacije zgoščevanja za podrobnosti.

Metode v HashMapassociate

  • K – Vrsta ključev na zemljevidu.
  • IN – Vrsta vrednosti, preslikanih na zemljevidu.

Metoda

Opis

počisti() Odstrani vse preslikave s tega zemljevida.
klon() Vrne plitvo kopijo tega primerka HashMap: sami ključi in vrednosti niso klonirani.
izračunaj (tipka K, BiFunction ? super V,? razširi V> remappingFunction) Poskuša izračunati preslikavo za navedeni ključ in njegovo trenutno preslikano vrednost (ali ničelno, če ni trenutne preslikave).
computeIfAbsent(tipka K, funkcija super K,? razširi V> funkcijo preslikave) Če navedeni ključ še ni povezan z vrednostjo (ali je preslikan v nič), poskuša izračunati njegovo vrednost z dano funkcijo preslikave in jo vnese v to preslikavo, razen če je nič.
computeIfPresent(tipka K, BiFunction ? super V,? razširi V> remappingFunction) Če je vrednost podanega ključa prisotna in ni ničelna, poskuša izračunati novo preslikavo glede na ključ in njegovo trenutno preslikano vrednost.
containsKey(ključ predmeta) Vrne true, če ta preslikava vsebuje preslikavo za navedeni ključ.
containsValue(vrednost predmeta) Vrne true, če ta preslikava preslika enega ali več ključev v podano vrednost.
vnosSet() Vrne nastavljeni pogled preslikav, ki jih vsebuje ta zemljevid.
get (ključ predmeta) Vrne vrednost, v katero je preslikan podani ključ, ali nič, če ta preslikava ne vsebuje preslikave za ključ.
je prazno() Vrne true, če ta zemljevid ne vsebuje preslikav ključ-vrednost.
keySet() Vrne nastavljeni pogled ključev, ki jih vsebuje ta zemljevid.
združi (tipka K, vrednost V, Bifunkcija ? super V,? razširi V> remappingFunction) Če podani ključ še ni povezan z vrednostjo ali je povezan z ničelno vrednostjo, ga povežite z dano vrednostjo, ki ni ničelna.
postavi (tipka K, vrednost V) Poveže podano vrednost s podanim ključem v tej preslikavi.
dalAll(Map m) Kopira vse preslikave s podanega zemljevida na ta zemljevid.
odstrani (ključ predmeta) Odstrani preslikavo za navedeni ključ s te preslikave, če je prisotna.
velikost () Vrne število preslikav ključa in vrednosti v tem zemljevidu.
vrednote() Vrne pogled zbirke vrednosti, ki jih vsebuje ta zemljevid.

Metode, podedovane iz razreda java.util.AbstractMap

METODA

OPIS

enako ()

Primerja podani predmet s tem zemljevidom za enakost.

hashCode()

Vrne vrednost zgoščene kode za ta zemljevid.

toString()

Vrne nizovno predstavitev tega zemljevida.

Metode, podedovane iz vmesnika java.util.Map

METODA

OPIS

enako () Primerja podani predmet s tem zemljevidom za enakost.

forEach(dejanje BiConsumer)

Izvede dano dejanje za vsak vnos v tem zemljevidu, dokler niso vsi vnosi obdelani ali dejanje vrže izjemo.
getOrDefault(ključ predmeta, V defaultValue) Vrne vrednost, v katero je preslikan podani ključ, ali defaultValue, če ta preslikava ne vsebuje preslikave za ključ.
hashCode() Vrne vrednost zgoščene kode za ta zemljevid.
putIfAbsent(tipka K, vrednost V) Če podani ključ še ni povezan z vrednostjo (ali je preslikan v ničelno), ga poveže z dano vrednostjo in vrne ničelno vrednost, sicer vrne trenutno vrednost.
odstrani (ključ predmeta, vrednost predmeta) Odstrani vnos za navedeni ključ le, če je trenutno preslikan v podano vrednost.
zamenjaj (tipka K, vrednost V) Zamenja vnos za navedeni ključ le, če je trenutno preslikan v neko vrednost.
zamenjaj (tipka K, V stara vrednost, V nova vrednost) Zamenja vnos za podani ključ le, če je trenutno preslikan v podano vrednost.

zamenjaj vse (funkcija BiFunction)

Zamenja vrednost vsakega vnosa z rezultatom priklica dane funkcije za ta vnos, dokler niso obdelani vsi vnosi ali funkcija vrže izjemo.

Prednosti Java HashMap

  • Hitro iskanje: HashMaps omogoča stalen časovni dostop do elementov, kar pomeni, da je iskanje in vstavljanje elementov zelo hitro.
  • Učinkovito shranjevanje : HashMaps uporablja funkcijo zgoščevanja za preslikavo ključev v indekse v matriki. To omogoča hitro iskanje vrednosti na podlagi ključev in učinkovito shranjevanje podatkov.
  • Prilagodljivost : HashMaps omogoča ničelne ključe in vrednosti ter lahko shrani pare ključ-vrednost katere koli vrste podatkov.
  • Enostaven za uporabo : HashMaps imajo preprost vmesnik in jih je mogoče enostavno implementirati v Javo.
  • Primerno za velike nabore podatkov : HashMaps lahko obdeluje velike nabore podatkov brez upočasnitve.

Slabosti Java HashMap

  • Neurejeno : HashMaps niso urejeni, kar pomeni, da se vrstni red dodajanja elementov na zemljevid ne ohrani.
  • Ni varno za niti : HashMap ni varen za niti, kar pomeni, da lahko, če več niti dostopa do istega hashmapa hkrati, pride do nedoslednosti podatkov.
  • Zmogljivost se lahko poslabša : V nekaterih primerih, če funkcija zgoščevanja ni pravilno implementirana ali če je faktor obremenitve previsok, se lahko zmogljivost HashMap poslabša.
  • Bolj zapleten kot nizi ali seznami : HashMaps je lahko bolj zapleten za razumevanje in uporabo kot preprosti nizi ali seznami, zlasti za začetnike.
  • Večja poraba pomnilnika : Ker HashMaps uporabljajo osnovno matriko, lahko porabijo več pomnilnika kot druge podatkovne strukture, kot so matrike ali seznami. To je lahko slabost, če je uporaba pomnilnika zaskrbljujoča.
  • Hashmap vs Treemap
  • Hashmap proti HashTable
  • Nedavni članki o Java HashMap

Pogosta vprašanja o Java HashMap

1. Kaj je HashMap v Javi?

HashMap v Javi je razred iz zbirnega ogrodja, ki lahko v sebi shrani pare ključ-vrednost.

2. Zakaj uporabljati HashMap v Javi?

HashMap v Javi se uporablja za shranjevanje parov ključ-vrednost, kjer je vsak ključ edinstven.

3. Kakšne so prednosti HashMapa?

HashMap se uporablja, ker ponuja funkcije, kot so:

  • Hitro iskanje
  • Učinkovito shranjevanje
  • Prilagodljiv za uporabo
  • Enostaven za uporabo
  • Primerno za velike nabore podatkov