logo

Vmesnik zemljevida v Javi

V Javi je vmesnik zemljevida prisoten v paketu java.util, ki predstavlja preslikavo med ključem in vrednostjo. Vmesnik Java Map ni podvrsta vmesnika Zbirni vmesnik . Zato se obnaša nekoliko drugače kot ostale vrste zbirk. Zemljevid vsebuje edinstvene ključe.

Geeki, nevihta možganov bi morala biti zakaj in kdaj uporabljati Zemljevide.

Zemljevidi so kot nalašč za uporabo za preslikavo povezav ključ-vrednost, kot so slovarji. Zemljevidi se uporabljajo za izvajanje iskanja po ključih ali ko želi nekdo pridobiti in posodobiti elemente po ključih. Nekateri pogosti scenariji so naslednji:



  • Zemljevid kod napak in njihovih opisov.
  • Zemljevid poštnih številk in mest.
  • Zemljevid vodij in zaposlenih. Vsak vodja (ključ) je povezan s seznamom zaposlenih (vrednost), ki jih upravlja.
  • Zemljevid razredov in študentov. Vsak razred (ključ) je povezan s seznamom študentov (vrednost).

Vmesnik zemljevida v Javi

Ustvarjanje zemljevidnih objektov

Ker je Zemljevid vmesnik , objektov ni mogoče ustvariti iz mape tipa. Za ustvarjanje predmeta vedno potrebujemo razred, ki razširi ta zemljevid. In tudi po uvedbi Generiki v Javi 1.5 je mogoče omejiti vrsto predmeta, ki se lahko shrani v zemljevid.

Sintaksa: Definiranje tipsko varnega zemljevida

Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>

Značilnosti vmesnika zemljevida

  1. Zemljevid ne sme vsebovati podvojenih ključev in vsak ključ lahko preslika v največ eno vrednost. Nekatere izvedbe dovoljujejo ničelni ključ in ničelne vrednosti, kot sta HashMap in LinkedHashMap, nekaterim pa ni všeč TreeMap .
  2. Vrstni red zemljevida je odvisen od specifičnih izvedb. na primer TreeMap in LinkedHashMap imata predvidljiva naročila, medtem ko HashMap ne.
  3. Obstajata dva vmesnika za implementacijo Map v Javi. To sta Map in SortedMap ter trije razredi: HashMap, TreeMap in LinkedHashMap.

Metode v vmesniku Java Map

Metoda Dejanje izvedeno
počisti() Ta metoda se uporablja v Java Map Interface za brisanje in odstranjevanje vseh elementov ali preslikav iz določene zbirke zemljevidov.
vsebujeKey(predmet) Ta metoda se uporablja v vmesniku zemljevida v Javi za preverjanje, ali je določen ključ preslikan v zemljevid ali ne. Kot parameter vzame ključni element in vrne True, če je ta element preslikan na zemljevidu.
vsebujeVrednost(predmet) Ta metoda se uporablja v vmesniku zemljevida za preverjanje, ali je določena vrednost preslikana z enim ali več kot enim ključem v zemljevidu. Vrednost vzame kot parameter in vrne True, če je ta vrednost preslikana s katerim koli od ključev v preslikavi.
vnosSet() Ta metoda se uporablja v vmesniku zemljevida v Javi za ustvarjanje niza iz istih elementov, ki jih vsebuje zemljevid. V bistvu vrne nastavljeni pogled zemljevida ali pa lahko ustvarimo nov nabor in vanj shranimo elemente zemljevida.
enako (predmet) Ta metoda se uporablja v Java Map Interface za preverjanje enakosti med dvema zemljevidoma. Preveri, ali so elementi ene karte, podane kot parameter, enaki elementom te karte ali ne.
get(predmet) Ta metoda se uporablja za pridobivanje ali pridobivanje vrednosti, preslikane z določenim ključem, omenjenim v parametru. Vrne NULL, če preslikava ne vsebuje takšne preslikave za ključ.
hashCode() Ta metoda se uporablja v vmesniku zemljevida za ustvarjanje hashCode za dani zemljevid, ki vsebuje ključe in vrednosti.
je prazno() Ta metoda se uporablja za preverjanje, ali ima preslikava vnos za pare ključev in vrednosti. Če preslikava ne obstaja, potem to vrne true.
keySet() Ta metoda se uporablja v vmesniku zemljevida za vrnitev nastavljenega pogleda ključev, ki jih vsebuje ta zemljevid. Nabor je podprt z zemljevidom, zato se spremembe zemljevida odražajo v naboru in obratno.
postavi (predmet, predmet) Ta metoda se uporablja v vmesniku Java Map Interface za povezavo podane vrednosti z navedenim ključem v tem zemljevidu.
dajVse (zemljevid) Ta metoda se uporablja v vmesniku zemljevidov v Javi za kopiranje vseh preslikav iz določenega zemljevida na ta zemljevid.
odstrani (predmet) Ta metoda se uporablja v vmesniku zemljevida za odstranitev preslikave za ključ s tega zemljevida, če je prisoten na zemljevidu.
velikost () Ta metoda se uporablja za vrnitev števila parov ključ/vrednost, ki so na voljo na zemljevidu.
vrednote() Ta metoda se uporablja v Java Map Interface za ustvarjanje zbirke iz vrednosti zemljevida. V bistvu vrne pogled zbirke vrednosti v HashMap.
getOrDefault(ključ predmeta, V defaultValue) Vrne vrednost, v katero je preslikan podani ključ, ali defaultValue, če ta preslikava ne vsebuje preslikave za ključ.
spoji (tipka K, vrednost V, funkcija preslikave BiFunction) Č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.
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 pridruženo vrednost.

primer:

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());> >}> >}> }>

>

>

Izhod:

a:100 b:200 c:300 d:400>

Razredi, ki izvajajo vmesnik zemljevida, so prikazani v spodnjem mediju in opisani kasneje, kot sledi:

Vmesnik zemljevida

java zamenja znak v nizu

1. HashMap

HashMap je del Javine zbirke od Jave 1.2. Zagotavlja osnovno izvedbo vmesnika Map Java. Podatke shranjuje v parih (ključ, vrednost). Za dostop do vrednosti je treba poznati njen ključ. Ta razred uporablja tehniko, imenovano 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());> >}> }>

>

>

Izhod

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap je tako kot HashMap z dodatno funkcijo vzdrževanja vrstnega reda elementov, vstavljenih vanj. HashMap je zagotovil prednost hitrega vstavljanja, iskanja in brisanja, vendar ni nikoli ohranil sledi in vrstnega reda vstavljanja, ki ju ponuja LinkedHashMap, kjer je mogoče dostopati do elementov v njihovem vrstnem redu vstavljanja. Poglejmo, kako ustvariti objekt zemljevida s tem razredom.

Primer

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());> >}> }>

>

>

Izhod

vishal 10 sachin 30 vaibhav 20>

3. TreeMap

The TreeMap v Javi se uporablja za implementacijo vmesnika Map in NavigableMap skupaj z abstraktnim razredom. Zemljevid je razvrščen v skladu z naravnim vrstnim redom njegovih ključev ali s primerjalnikom, ki je na voljo ob ustvarjanju zemljevida, odvisno od uporabljenega konstruktorja. To se je izkazalo za učinkovit način razvrščanja in shranjevanja parov ključ-vrednost. Vrstni red shranjevanja, ki ga vzdržuje drevesni zemljevid, mora biti skladen z enakimi, tako kot kateri koli drug razvrščeni zemljevid, ne glede na eksplicitne primerjalnike. Poglejmo, kako ustvariti objekt zemljevida s tem razredom.

Primer

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());> >}> }>

>

>

Izhod

sachin 30 vaibhav 20 vishal 10>

Izvajanje operacij z uporabo Vmesnik zemljevida in Razred HashMap

Ker je Map vmesnik, ga je mogoče uporabljati samo z razredom, ki implementira ta vmesnik. Zdaj pa poglejmo, kako izvesti nekaj pogosto uporabljenih operacij na zemljevidu z uporabo pogosto uporabljenih Razred HashMap . In tudi po uvedbi Generiki v Javi 1.5 je mogoče omejiti vrsto objekta, ki se lahko shrani v zemljevid.

1. Dodajanje elementov

Za dodajanje elementa na zemljevid lahko uporabimo metodo put(). 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.

Primer

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);> >}> }>

>

>

datum pretvori v niz
Izhod

{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}>

2. Spreminjanje elementa

Po dodajanju elementov, če želimo element spremeniti, lahko to storimo tako, da ponovno dodamo element z metodo put(). 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.

Primer

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>),>'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);> >}> }>

>

>

Izhod

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

3. Odstranjevanje elementov

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

Primer

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);> >}> }>

>

>

Izhod

{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}>

4. Ponavljanje po zemljevidu

Obstaja več načinov za ponavljanje po zemljevidu. Najbolj znan način je uporaba zanke za vsak in pridobitev ključev. Vrednost ključa se najde z uporabo metode getValue().

Primer

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);> >}> >}> }>

avl drevo

>

>

Izhod

1 : Geeks 2 : For 3 : Geeks>

5. Preštejte pojavnost števil z uporabo Hashmapa

V tej kodi uporabljamo putIfAbsent( ) skupaj z Collections.frequency() prešteti natančno pojavljanje števil. V mnogih programih morate prešteti pojavljanje določene številke ali črke. Za reševanje teh vrst težav uporabite naslednji pristop

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); } }>

>

>

Izhod

{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}>

Pogosta vprašanja o vmesniku Java Map

Q1. Kaj je zemljevidni vmesnik v Javi?

odgovor:

Zemljevid vsebuje pare ključ-vrednost, kjer dostopamo do elementov v zemljevidu s pomočjo ključnih vrednosti.

Q2. Kakšne so vrste vmesnikov zemljevidov v Javi?

odgovor:

Obstajajo 3 implementacije vmesnika zemljevidov HashMap, LinkedHashMap in TreeMap.