Java HashMap implementira vmesnik Map, ki nam omogoča za shranjevanje para ključ in vrednost , kjer morajo biti ključi edinstveni. Če poskusite vstaviti dvojnik ključa, bo zamenjal element ustreznega ključa. Preprosto je izvajati operacije z uporabo indeksa ključev, kot so posodabljanje, brisanje itd. Razred HashMap najdete vjava.utilpaket.
HashMap v Javi je podoben starejšemu razredu Hashtable, vendar ni sinhroniziran. Omogoča nam tudi shranjevanje ničelnih elementov, vendar mora obstajati samo en ničelni ključ. Od Jave 5 dalje se označuje kotHashMap, kjer K pomeni ključ, V pa vrednost. Podeduje razred AbstractMap in implementira vmesnik Map.
Točke, ki si jih je treba zapomniti
- Java HashMap vsebuje vrednosti na podlagi ključa.
- Java HashMap vsebuje samo edinstvene ključe.
- Java HashMap ima lahko en ničelni ključ in več ničelnih vrednosti.
- Java HashMap ni sinhroniziran.
- Java HashMap ne ohranja reda.
- Začetna privzeta zmogljivost razreda Java HashMap je 16 s faktorjem obremenitve 0,75.
Hierarhija razreda HashMap
Kot je prikazano na zgornji sliki, razred HashMap razširja razred AbstractMap in implementira vmesnik Map.
Deklaracija razreda HashMap
Oglejmo si deklaracijo za razred java.util.HashMap.
alternativa xampp
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Parametri razreda HashMap
Oglejmo si parametre za razred java.util.HashMap.
Konstruktorji razreda Java HashMap
Konstruktor | Opis |
---|---|
HashMap() | Uporablja se za izdelavo privzetega HashMapa. |
HashMap(Map m) | Uporablja se za inicializacijo razpršenega zemljevida z uporabo elementov danega predmeta zemljevida m. |
HashMap (zmogljivost int) | Uporablja se za inicializacijo zmogljivosti razpršenega zemljevida na dano celoštevilsko vrednost, zmogljivost. |
HashMap(int zmogljivost, float loadFactor) | Uporablja se za inicializacijo zmogljivosti in faktorja obremenitve zgoščenega zemljevida z uporabo njegovih argumentov. |
Metode razreda Java HashMap
Metoda | Opis |
---|---|
void clear() | Uporablja se za odstranitev vseh preslikav s tega zemljevida. |
logično isEmpty() | Uporablja se za vrnitev true, če ta zemljevid ne vsebuje preslikav ključ-vrednost. |
Klon predmeta() | Uporablja se za vrnitev plitve kopije tega primerka HashMap: sami ključi in vrednosti niso klonirani. |
Nastavi vnosSet() | Uporablja se za vrnitev pogleda zbirke preslikav, ki jih vsebuje ta zemljevid. |
Nastavi keySet() | Uporablja se za vrnitev nastavljenega pogleda ključev, ki jih vsebuje ta zemljevid. |
V postavi (ključ predmeta, vrednost predmeta) | Uporablja se za vnos vnosa v zemljevid. |
void putAll (preslikava zemljevida) | Uporablja se za vstavljanje določenega zemljevida v zemljevid. |
V putIfAbsent(ključ K, vrednost V) | Podano vrednost z navedenim ključem vstavi v preslikavo samo, če še ni podana. |
V odstrani (ključ predmeta) | Uporablja se za brisanje vnosa za podani ključ. |
logično odstranjevanje (ključ predmeta, vrednost predmeta) | Iz zemljevida odstrani podane vrednosti s povezanimi podanimi ključi. |
V compute (tipka K, BiFunction remappingFunction) | Uporablja se za izračun preslikave za podani ključ in njegovo trenutno preslikano vrednost (ali ničelno, če trenutne preslikave ni). |
V computeIfAbsent(tipka K, funkcija preslikave funkcij) | Uporablja se za izračun njegove vrednosti z uporabo dane funkcije preslikave, če navedeni ključ še ni povezan z vrednostjo (ali je preslikan v nič), in ga vnese v to preslikavo, razen če je nič. |
V computeIfPresent(tipka K, BiFunction remappingFunction) | Uporablja se za izračun nove preslikave glede na ključ in njegovo trenutno preslikano vrednost, če je vrednost podanega ključa prisotna in ni ničelna. |
boolean containsValue(vrednost predmeta) | Ta metoda vrne true, če znotraj zemljevida obstaja vrednost, ki je enaka vrednosti, sicer vrne false. |
boolean containsKey(ključ predmeta) | Ta metoda vrne true, če v preslikavi obstaja nek ključ, ki je enak ključu, sicer vrne false. |
logično je enako (predmet o) | Uporablja se za primerjavo določenega predmeta z zemljevidom. |
void forEach (dejanje BiConsumer) | Izvede dano dejanje za vsak vnos na zemljevidu, dokler niso vsi vnosi obdelani ali dejanje vrže izjemo. |
V get (ključ predmeta) | Ta metoda vrne objekt, ki vsebuje vrednost, povezano s ključem. |
V getOrDefault(ključ predmeta, V defaultValue) | Vrne vrednost, v katero je preslikan podani ključ, ali defaultValue, če preslikava ne vsebuje preslikave za ključ. |
logično isEmpty() | Ta metoda vrne true, če je zemljevid prazen; vrne false, če vsebuje vsaj en ključ. |
V spajanje (tipka K, vrednost V, funkcija preslikave BiFunction) | Če navedeni ključ še ni povezan z vrednostjo ali je povezan z ničelno vrednostjo, ga poveže z dano vrednostjo, ki ni ničelna. |
V zamenjava (tipka K, vrednost V) | Nadomesti podano vrednost za določen ključ. |
logična zamenjava (tipka K, V stara vrednost, V nova vrednost) | Zamenja staro vrednost z novo vrednostjo za določen ključ. |
void replaceAll (funkcija BiFunction) | Zamenja vrednost vsakega vnosa z rezultatom priklica dane funkcije na tem vnosu, dokler niso obdelani vsi vnosi ali funkcija vrže izjemo. |
Vrednosti zbirke () | Vrne pogled zbirke vrednosti, ki jih vsebuje zemljevid. |
int size() | Ta metoda vrne število vnosov na zemljevidu. |
Primer Java HashMap
Oglejmo si preprost primer HashMap za shranjevanje para ključev in vrednosti.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Preizkusite zdaj
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
V tem primeru shranjujemo Integer kot ključ in String kot vrednost, zato uporabljamoHashMapkot tip. Thedaj()metoda vstavi elemente v zemljevid.
Da bi dobili elemente ključa in vrednosti, bi morali poklicati metodi getKey() in getValue(). TheZemljevid.Vstopvmesnik vsebuje getKey() in getValue() metode. Vendar bi morali poklicati metodo entrySet() vmesnika Map, da bi dobili primerek Map.Entry.
Brez podvojenega ključa na HashMap
V HashMap ne morete shraniti podvojenih ključev. Če pa poskušate shraniti podvojeni ključ z drugo vrednostjo, bo zamenjal vrednost.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Preizkusite zdaj
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Primer Java HashMap za elemente add().
Tukaj vidimo različne načine vstavljanja elementov.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
Primer Java HashMap za elemente remove().
Tukaj vidimo različne načine odstranjevanja elementov.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Izhod:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
Primer Java HashMap za zamenjavo() elementov
Tukaj vidimo različne načine zamenjave elementov.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
Razlika med HashSet in HashMap
HashSet vsebuje samo vrednosti, medtem ko HashMap vsebuje vnos (ključ in vrednost).
Primer Java HashMap: Knjiga
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Preizkusite zdaj
Izhod:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
Sorodne teme
Kako razvrstiti HashMap v Javi
Faktor obremenitve v HashMap
Delovanje HashMap v Javi | Kako deluje HashMap
Razlika med HashMap in Hashtable
Kako razvrstiti HashMap po vrednosti
Razlika med HashSet in HashMap
Razlika med HashMap in TreeMap
pretvorba datuma v niz