Java, žemėlapio sąsaja yra java.util pakete, kuris reiškia rakto ir reikšmės susiejimą. Java Map sąsaja nėra potipis Kolekcijos sąsaja . Todėl jis elgiasi šiek tiek kitaip nei kiti kolekcijos tipai. Žemėlapyje yra unikalūs raktai.
Geeks, smegenų šturmas turėjo būti kodėl ir kada naudoti Žemėlapius.
Žemėlapiai puikiai tinka raktų ir reikšmių asociacijų atvaizdavimui, pvz., žodynams. Žemėlapiai naudojami ieškoti pagal raktus arba kai kas nors nori gauti ir atnaujinti elementus pagal raktus. Kai kurie įprasti scenarijai yra tokie:
- Klaidų kodų ir jų aprašymų žemėlapis.
- Pašto kodų ir miestų žemėlapis.
- Vadovų ir darbuotojų žemėlapis. Kiekvienas vadovas (raktas) yra susietas su jo vadovaujamų darbuotojų sąrašu (vertybe).
- Klasių ir mokinių žemėlapis. Kiekviena klasė (raktas) yra susieta su mokinių sąrašu (vertė).

Žemėlapio objektų kūrimas
Kadangi žemėlapis yra sąsaja , objektų negalima sukurti pagal tipo žemėlapį. Mums visada reikia klasės, kuri išplečia šį žemėlapį, kad galėtume sukurti objektą. Ir taip pat po įvedimo Generics Java 1.5 versijoje galima apriboti objekto, kuris gali būti saugomas Žemėlapyje, tipą.
Sintaksė: Tinkamo tipo žemėlapio apibrėžimas
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Žemėlapio sąsajos charakteristikos
- Žemėlapyje negali būti pasikartojančių raktų ir kiekvienas raktas gali susieti daugiausia su viena verte. Kai kurie diegimai leidžia nulinio rakto ir nulinės reikšmės, pvz., HashMap ir LinkedHashMap , tačiau kai kuriems nepatinka TreeMap .
- Žemėlapio tvarka priklauso nuo konkrečių įgyvendinimų. Pavyzdžiui, TreeMap ir LinkedHashMap turi nuspėjamus užsakymus, o HashMap neturi.
- Yra dvi sąsajos, skirtos žemėlapiui įdiegti „Java“. Tai yra „Map“ ir „SortedMap“ ir trys klasės: „HashMap“, „TreeMap“ ir „LinkedHashMap“.
Metodai Java žemėlapių sąsajoje
| Metodas | Veiksmas atliktas |
|---|---|
| aišku () | Šis metodas naudojamas Java žemėlapių sąsajoje, norint išvalyti ir pašalinti visus elementus arba atvaizdus iš nurodytos žemėlapių kolekcijos. |
| yra raktas (objektas) | Šis metodas naudojamas „Java“ žemėlapio sąsajoje norint patikrinti, ar konkretus raktas yra susietas su žemėlapiu, ar ne. Jis paima pagrindinį elementą kaip parametrą ir grąžina True, jei tas elementas yra susietas žemėlapyje. |
| yra vertė (objektas) | Šis metodas naudojamas žemėlapio sąsajoje norint patikrinti, ar tam tikra reikšmė atvaizduojama vienu ar daugiau nei vienu žemėlapio klavišu. Ji paima reikšmę kaip parametrą ir grąžina True, jei ši reikšmė yra susieta bet kuriuo iš žemėlapio klavišų. |
| įrašasSet() | Šis metodas naudojamas „Java“ žemėlapio sąsajoje, siekiant sukurti rinkinį iš tų pačių elementų, esančių žemėlapyje. Tai iš esmės grąžina rinkinį žemėlapio vaizdą arba galime sukurti naują rinkinį ir juose saugoti žemėlapio elementus. |
| lygus (objektas) | Šis metodas naudojamas „Java“ žemėlapių sąsajoje, siekiant patikrinti dviejų žemėlapių lygybę. Jis patikrina, ar vieno žemėlapio elementai, perduodami kaip parametras, yra lygūs šio žemėlapio elementams, ar ne. |
| gauti (objektas) | Šis metodas naudojamas norint gauti arba gauti reikšmę, susietą pagal tam tikrą parametre nurodytą raktą. Jis grąžina NULL, kai žemėlapyje nėra tokio rakto atvaizdavimo. |
| maišos kodas () | Šis metodas naudojamas žemėlapio sąsajoje, norint sugeneruoti maišos kodą duotam žemėlapiui su raktais ir reikšmėmis. |
| Yra tuščias() | Šis metodas naudojamas patikrinti, ar žemėlapyje yra raktų ir verčių porų įrašas. Jei susiejimo nėra, grąžinama tiesa. |
| keySet() | Šis metodas naudojamas žemėlapio sąsajoje norint grąžinti šiame žemėlapyje esančių raktų rinkinio rodinį. Rinkinį palaiko žemėlapis, todėl žemėlapio pakeitimai atsispindi rinkinyje ir atvirkščiai. |
| įdėti (objektas, objektas) | Šis metodas naudojamas Java žemėlapio sąsajoje, norint susieti nurodytą reikšmę su nurodytu raktu šiame žemėlapyje. |
| įdėti viską (žemėlapis) | Šis metodas naudojamas „Java“ žemėlapių sąsajoje, norint nukopijuoti visus atvaizdus iš nurodyto žemėlapio į šį žemėlapį. |
| pašalinti (objektas) | Šis metodas naudojamas žemėlapio sąsajoje, norint pašalinti rakto atvaizdavimą iš šio žemėlapio, jei jis yra žemėlapyje. |
| dydis () | Šis metodas naudojamas žemėlapyje galimų raktų/reikšmių porų skaičiui grąžinti. |
| reikšmės () | Šis metodas naudojamas Java žemėlapių sąsajoje, kad būtų sukurta žemėlapio reikšmių kolekcija. Iš esmės jis pateikia „HashMap“ verčių rinkinio rodinį. |
| getOrDefault (objekto raktas, V numatytoji vertė) | Grąžina reikšmę, su kuria susietas nurodytas raktas, arba defaultValue, jei šiame žemėlapyje nėra rakto susiejimo. |
| sulieti (K raktas, V reikšmė, BiFunction remappingFunction) | Jei nurodytas raktas dar nesusietas su reikšme arba yra susietas su nuliu, susiekite jį su nurodyta nenuline verte. |
| putIf Absent (K raktas, V reikšmė) | Jei nurodytas raktas dar nesusietas su reikšme (arba susietas su nuliu), susieja jį su nurodyta reikšme ir grąžina nulį, kitu atveju grąžina dabartinę susietą reikšmę. |
Pavyzdys:
Java
// Java Program to Demonstrate> // Working of Map interface> > // Importing required classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty HashMap> >Map hm> >=>new> HashMap();> > >// Inserting pairs in above Map> >// using put() method> >hm.put(>'a'>,>new> Integer(>100>));> >hm.put(>'b'>,>new> Integer(>200>));> >hm.put(>'c'>,>new> Integer(>300>));> >hm.put(>'d'>,>new> Integer(>400>));> > >// Traversing through Map using for-each loop> >for> (Map.Entry me :> >hm.entrySet()) {> > >// Printing keys> >System.out.print(me.getKey() +>':'>);> >System.out.println(me.getValue());> >}> >}> }> |
>
>Išvestis:
a:100 b:200 c:300 d:400>
Žemėlapio sąsają įdiegiančios klasės yra pavaizduotos toliau pateiktoje laikmenoje ir aprašytos vėliau taip:

1. HashMap
HashMap yra „Java“ kolekcijos dalis nuo „Java 1.2“. Tai suteikia pagrindinį „Java“ žemėlapio sąsajos įgyvendinimą. Jis saugo duomenis poromis (raktas, reikšmė). Norint pasiekti vertę, reikia žinoti jos raktą. Ši klasė naudoja techniką, vadinamą Java
// Java Program to illustrate the Hashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >Map map =>new> HashMap();> > >// Inserting entries in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Išvestis
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
„LinkedHashMap“ yra kaip „HashMap“ su papildoma funkcija palaikyti įterptų elementų tvarką. „HashMap“ suteikė greito įterpimo, paieškos ir ištrynimo pranašumą, tačiau niekada nepalaikė „LinkedHashMap“ pateiktos įterpimo sekos ir tvarkos, kur elementus galima pasiekti jų įterpimo tvarka. Pažiūrėkime, kaip sukurti žemėlapio objektą naudojant šią klasę.
Pavyzdys
Java
// Java Program to Illustrate the LinkedHashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty LinkedHashMap> >Map map =>new> LinkedHashMap();> > >// Inserting pair entries in above Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Išvestis
vishal 10 sachin 30 vaibhav 20>
3. TreeMap
The TreeMap Java naudojamas žemėlapio sąsajai ir NavigableMap kartu su abstrakčia klase įdiegti. Žemėlapis rūšiuojamas pagal natūralią jo raktų tvarką arba palyginimo priemonę, pateiktą žemėlapio kūrimo metu, priklausomai nuo to, kuris konstruktorius naudojamas. Tai yra veiksmingas būdas rūšiuoti ir saugoti raktų ir reikšmių poras. Medžio schemoje palaikoma saugojimo tvarka turi atitikti lygiaverčius lygius, kaip ir bet kuris kitas surūšiuotas žemėlapis, neatsižvelgiant į aiškius lyginamuosius elementus. Pažiūrėkime, kaip sukurti žemėlapio objektą naudojant šią klasę.
Pavyzdys
Java
// Java Program to Illustrate TreeMap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty TreeMap> >Map map =>new> TreeMap();> > >// Inserting custom elements in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map using for each loop> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
java eilutės formatas ilgas
>Išvestis
sachin 30 vaibhav 20 vishal 10>
Operacijų atlikimas naudojant Žemėlapio sąsaja ir HashMap klasė
Kadangi žemėlapis yra sąsaja, jį galima naudoti tik su klase, kuri įgyvendina šią sąsają. Dabar pažiūrėkime, kaip atlikti keletą dažnai naudojamų veiksmų žemėlapyje naudojant plačiai naudojamą HashMap klasė . Ir taip pat po įvedimo Generics Java 1.5 versijoje galima apriboti objekto tipą, kuris gali būti saugomas žemėlapyje.
1. Elementų pridėjimas
Norėdami pridėti elementą į žemėlapį, galime naudoti metodą put() . Tačiau įterpimo tvarka maišos diagramoje neišsaugoma. Viduje kiekvienam elementui sukuriama atskira maiša ir elementai indeksuojami pagal šią maišą, kad ji būtų efektyvesnė.
Pavyzdys
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> >// Default Initialization of a> >// Map> >Map hm1 =>new> HashMap();> > >// Initialization of a Map> >// using Generics> >Map hm2> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> > >hm2.put(>new> Integer(>1>),>'Geeks'>);> >hm2.put(>new> Integer(>2>),>'For'>);> >hm2.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(hm1);> >System.out.println(hm2);> >}> }> |
>
>Išvestis
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Keičiamas elementas
Pridėjus elementus, jei norime elementą pakeisti, tai galima padaryti dar kartą pridedant elementą put() metodu. Kadangi elementai žemėlapyje indeksuojami naudojant klavišus, rakto reikšmę galima pakeisti tiesiog įterpiant atnaujintą rakto, kurį norime pakeisti, reikšmę.
Pavyzdys
Java
sąjunga prieš sąjungą visi
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'Geeks'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(>'Initial Map '> + hm1);> > >hm1.put(>new> Integer(>2>),>'For'>);> > >System.out.println(>'Updated Map '> + hm1);> >}> }> |
>
>Išvestis
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Elementų pašalinimas
Norėdami pašalinti elementą iš žemėlapio, galime naudoti pašalinimo() metodą . Šis metodas paima rakto reikšmę ir pašalina rakto susiejimą iš šio žemėlapio, jei jis yra žemėlapyje.
Pavyzdys
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> >hm1.put(>new> Integer(>4>),>'For'>);> > >// Initial Map> >System.out.println(hm1);> > >hm1.remove(>new> Integer(>4>));> > >// Final Map> >System.out.println(hm1);> >}> }> |
>
>Išvestis
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Iteravimas per žemėlapį
Yra keletas būdų, kaip kartoti žemėlapį. Garsiausias būdas yra naudoti už kiekvieną kilpą ir gauti raktus. Rakto reikšmė randama naudojant getValue() metodą.
Pavyzdys
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >for> (Map.Entry mapElement : hm1.entrySet()) {> >int> key = (>int>)mapElement.getKey();> > >// Finding the value> >String value = (String)mapElement.getValue();> > >System.out.println(key +>' : '> + value);> >}> >}> }> |
>
>Išvestis
1 : Geeks 2 : For 3 : Geeks>
5. Suskaičiuokite skaičių atsiradimą naudodami Hashmap
Šiame kode mes naudojame putJei nėra( ) kartu su Collections.frequency() suskaičiuoti tikslų skaičių atsiradimą. Daugelyje programų reikia skaičiuoti konkretaus skaičiaus ar raidės atsiradimą. Norėdami išspręsti tokias problemas, naudojate šį metodą
Java
// Java program to Count the Occurrence> // of numbers using Hashmap> import> java.util.*;> > class> HelloWorld {> >public> static> void> main(String[] args)> >{> >int> a[] = {>1>,>13>,>4>,>1>,>41>,>31>,>31>,>4>,>13>,>2> };> > >// put all elements in arraylist> >ArrayList aa =>new> ArrayList();> >for> (>int> i =>0>; i aa.add(a[i]); } HashMap h = new HashMap(); // counting occurrence of numbers for (int i = 0; i h.putIfAbsent(aa.get(i), Collections.frequency( aa, aa.get(i))); } System.out.println(h); } }> |
>
>Išvestis
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> DUK „Java“ žemėlapių sąsajoje
Q1. Kas yra „Java“ žemėlapio sąsaja?
Atsakymas:
Žemėlapyje yra raktų ir reikšmių poros, kuriose mes pasiekiame žemėlapio elementus naudodami pagrindines reikšmes.
Q2. Kokie yra „Java“ žemėlapių sąsajų tipai?
Atsakymas:
Yra 3 žemėlapių sąsajos diegimai HashMap, LinkedHashMap ir TreeMap.