Java HashMap klasė įgyvendina žemėlapio sąsają, kuri leidžia mums rakto ir vertės porai išsaugoti , kur raktai turi būti unikalūs. Jei bandysite įterpti pasikartojantį raktą, jis pakeis atitinkamo rakto elementą. Nesunku atlikti tokias operacijas naudojant pagrindinį indeksą kaip naujinimas, trynimas ir pan. HashMap klasė randamajava.utilpaketą.
„HashMap“ programoje „Java“ yra kaip senoji „Hashtable“ klasė, tačiau ji nėra sinchronizuota. Tai leidžia mums saugoti ir nulinius elementus, tačiau turi būti tik vienas nulinis raktas. Nuo Java 5 jis žymimas kaipHashMap, kur K reiškia raktą, o V – reikšmę. Jis paveldi AbstractMap klasę ir įgyvendina žemėlapio sąsają.
Taškai, kuriuos reikia prisiminti
- „Java HashMap“ yra reikšmių, pagrįstų raktu.
- „Java HashMap“ turi tik unikalius raktus.
- Java HashMap gali turėti vieną nulinį raktą ir kelias nulines reikšmes.
- „Java HashMap“ nėra sinchronizuotas.
- Java HashMap nepalaiko jokios tvarkos.
- Pradinė numatytoji Java HashMap klasės talpa yra 16, o apkrovos koeficientas yra 0,75.
HashMap klasės hierarchija
Kaip parodyta aukščiau esančiame paveikslėlyje, HashMap klasė išplečia AbstractMap klasę ir įgyvendina žemėlapio sąsają.
HashMap klasės deklaracija
Pažiūrėkime java.util.HashMap klasės deklaraciją.
8-1 multiplekseris
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
HashMap klasės parametrai
Pažiūrėkime java.util.HashMap klasės parametrus.
Java HashMap klasės konstruktoriai
Konstruktorius | apibūdinimas |
---|---|
HashMap () | Jis naudojamas sukurti numatytąjį HashMap. |
HashMap (žemėlapis m) | Jis naudojamas maišos žemėlapio inicijavimui naudojant nurodyto žemėlapio objekto m elementus. |
HashMap (vidinė talpa) | Jis naudojamas maišos žemėlapio talpai inicijuoti iki nurodytos sveikojo skaičiaus reikšmės, talpos. |
HashMap (vidinė talpa, plūduriuojantis apkrovos koeficientas) | Jis naudojamas maišos žemėlapio talpai ir apkrovos koeficientui inicijuoti naudojant jo argumentus. |
Java HashMap klasės metodai
Metodas | apibūdinimas |
---|---|
tuščias aiškus () | Jis naudojamas pašalinti visus atvaizdus iš šio žemėlapio. |
loginis yra tuščias() | Jis naudojamas norint grąžinti „true“, jei šiame žemėlapyje nėra raktų ir reikšmių susiejimo. |
Objekto klonas () | Jis naudojamas norint grąžinti negilią šio HashMap egzemplioriaus kopiją: patys raktai ir reikšmės nėra klonuoti. |
Nustatyti įrašąSet() | Jis naudojamas šiame žemėlapyje esančių atvaizdų rinkinio rodiniui grąžinti. |
Nustatyti keySet() | Jis naudojamas norint grąžinti šiame žemėlapyje esančių raktų rinkinį. |
V put (objekto raktas, objekto reikšmė) | Jis naudojamas įrašui įterpti į žemėlapį. |
galioti įdėti viską (žemėlapio žemėlapis) | Jis naudojamas nurodytam žemėlapiui įterpti į žemėlapį. |
V putIfAbsent (K raktas, V reikšmė) | Jis įterpia nurodytą reikšmę su nurodytu raktu į žemėlapį tik tuo atveju, jei ji dar nenurodyta. |
V pašalinti (objekto raktas) | Jis naudojamas norint ištrinti nurodyto rakto įrašą. |
loginis pašalinimas (objekto raktas, objekto reikšmė) | Jis pašalina nurodytas reikšmes su susijusiais nurodytais raktais iš žemėlapio. |
V skaičiavimas (K klavišas, BiFunction perdarymo funkcija) | Jis naudojamas nurodyto rakto ir jo dabartinės susietos vertės (arba nulinės, jei dabartinio susiejimo nėra) susiejimui apskaičiuoti. |
V computeIfAbsent (K klavišas, funkcijos susiejimo funkcija) | Jis naudojamas jo vertei apskaičiuoti naudojant nurodytą susiejimo funkciją, jei nurodytas raktas dar nesusietas su reikšme (arba susietas su nuliu), ir įveda jį į šį žemėlapį, nebent nulis. |
V computeIfPresent (K klavišas, BiFunction remappingFunction) | Jis naudojamas naujam susiejimui apskaičiuoti, atsižvelgiant į raktą ir jo dabartinę susietą reikšmę, jei nurodyto rakto reikšmė yra ir nėra nulinė. |
loginė vertė (objekto reikšmė) | Šis metodas grąžina „true“, jei žemėlapyje yra tam tikra reikšmė, kitu atveju grąžinama „false“. |
loginis yraKey (Objekto raktas) | Šis metodas grąžina „true“, jei žemėlapyje yra raktas, lygus raktui, kitu atveju grąžina „false“. |
loginis lygus (O objektas) | Jis naudojamas norint palyginti nurodytą objektą su žemėlapiu. |
negalioja kiekvienam (dviejų vartotojų veiksmas) | Jis atlieka nurodytą veiksmą kiekvienam įrašui žemėlapyje, kol visi įrašai bus apdoroti arba veiksmas padarys išimtį. |
V get (objekto raktas) | Šis metodas grąžina objektą, kuriame yra su raktu susijusi reikšmė. |
V getOrDefault (objekto raktas, V numatytoji vertė) | Jis grąžina reikšmę, su kuria susietas nurodytas raktas, arba defaultValue, jei žemėlapyje nėra rakto susiejimo. |
loginis yra tuščias() | Šis metodas grąžina teisingą, jei žemėlapis tuščias; grąžina false, jei jame yra bent vienas raktas. |
V suliejimas (K raktas, V reikšmė, BiFunction perdarymo funkcija) | Jei nurodytas raktas dar nesusietas su reikšme arba yra susietas su nuliu, susieja jį su nurodyta nenuline verte. |
V pakeitimas (K klavišas, V reikšmė) | Jis pakeičia nurodytą nurodyto rakto vertę. |
loginis pakeitimas (K raktas, V senoji vertė, V nauja vertė) | Ji pakeičia seną reikšmę nauja nurodyto rakto reikšme. |
galioti pakeisti viską („BiFunction“ funkcija) | Jis pakeičia kiekvieno įrašo reikšmę duotos funkcijos iškvietimu tame įraše, kol visi įrašai bus apdoroti arba funkcija padarys išimtį. |
Kolekcijos vertės () | Jis grąžina žemėlapyje esančių verčių rinkinį. |
int dydis () | Šis metodas grąžina įrašų skaičių žemėlapyje. |
Java HashMap pavyzdys
Pažiūrėkime paprastą HashMap pavyzdį, skirtą rakto ir vertės porai saugoti.
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()); } } }Išbandykite dabar
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
Šiame pavyzdyje kaip raktą saugome sveikąjį skaičių, o kaip reikšmę – eilutę, todėl naudojameHashMapkaip tipas. Theįdėti ()metodas įterpia elementus į žemėlapį.
Norėdami gauti rakto ir vertės elementus, turėtume iškviesti getKey() ir getValue() metodus. TheŽemėlapis.Įėjimassąsajoje yra getKey () ir getValue() metodus. Tačiau turėtume iškviesti žemėlapio sąsajos metodą enterSet(), kad gautume Map.Entry egzempliorių.
Nėra pasikartojančio rakto „HashMap“.
„HashMap“ negalite saugoti pasikartojančių raktų. Tačiau jei bandysite išsaugoti pasikartojantį raktą su kita reikšme, ji pakeis reikšmę.
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()); } } }Išbandykite dabar
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Java HashMap pavyzdys pridėti () elementus
Čia matome skirtingus elementų įterpimo būdus.
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
Java HashMap pavyzdys, kaip pašalinti () elementus
Čia matome įvairius būdus, kaip pašalinti elementus.
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); } }
Išvestis:
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}
Java HashMap pavyzdys pakeisti () elementus
Čia matome įvairius būdus, kaip pakeisti elementus.
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
Skirtumas tarp HashSet ir HashMap
„HashSet“ yra tik reikšmės, o „HashMap“ yra įrašas (raktas ir reikšmė).
Java HashMap pavyzdys: knyga
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); } } }Išbandykite dabar
Išvestis:
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
Susijusios temos
Kaip rūšiuoti „HashMap“ programoje „Java“.
„HashMap“ apkrovos koeficientas
linux paleisti komandą
HashMap darbas Java | Kaip veikia HashMap
Skirtumas tarp HashMap ir Hashtable
Kaip rūšiuoti HashMap pagal vertę
Skirtumas tarp HashSet ir HashMap