Javassa Map Interface on java.util-paketissa, joka edustaa avaimen ja arvon välistä kartoitusta. Java Map -käyttöliittymä ei ole sen alatyyppi Kokoelman käyttöliittymä . Siksi se käyttäytyy hieman eri tavalla kuin muut kokoelmatyypit. Kartta sisältää ainutlaatuiset avaimet.
Geeks, aivoriihi olisi pitänyt olla miksi ja milloin käyttää Mapsia.
Kartat sopivat erinomaisesti käytettäväksi avainarvojen yhdistämiseen, kuten sanakirjoihin. Karttoja käytetään hakujen tekemiseen avaimilla tai kun joku haluaa hakea ja päivittää elementtejä avaimilla. Jotkut yleiset skenaariot ovat seuraavat:
- Kartta virhekoodeista ja niiden kuvauksista.
- Kartta postinumeroista ja kaupungeista.
- Kartta esimiehistä ja työntekijöistä. Jokainen johtaja (avain) liittyy luetteloon hänen johtamistaan työntekijöistä (arvo).
- Kartta luokista ja oppilaista. Jokainen luokka (avain) liittyy opiskelijaluetteloon (arvo).

Karttaobjektien luominen
Koska kartta on käyttöliittymä , objekteja ei voi luoda tyyppiä karttaa. Tarvitsemme aina luokan, joka laajentaa tätä karttaa objektin luomiseksi. Ja myös käyttöönoton jälkeen Generics Java 1.5:ssä on mahdollista rajoittaa karttaan tallennettavien objektien tyyppiä.
Syntaksi: Tyyppiturvallisen kartan määrittäminen
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Karttakäyttöliittymän ominaisuudet
- Kartta ei voi sisältää päällekkäisiä avaimia, ja kukin avain voi yhdistää enintään yhteen arvoon. Jotkut toteutukset sallivat nolla-avain- ja tyhjäarvot, kuten HashMap ja LinkedHashMap, mutta jotkut eivät pidä TreeMap .
- Kartan järjestys riippuu erityisistä toteutuksista. Esimerkiksi, TreeMap ja LinkedHashMapilla on ennakoitavissa olevat tilaukset, kun taas HashMapilla ei ole.
- Mapin toteuttamiseen Javassa on kaksi käyttöliittymää. Ne ovat Map ja SortedMap ja kolme luokkaa: HashMap, TreeMap ja LinkedHashMap.
Java-karttaliittymän menetelmät
| Menetelmä | Toimenpide suoritettu |
|---|---|
| asia selvä() | Tätä menetelmää käytetään Java Map Interface -sovelluksessa kaikkien elementtien tai kartoitusten tyhjentämiseen ja poistamiseen määritetystä karttakokoelmasta. |
| sisältääKey(objekti) | Tätä menetelmää käytetään Javan karttaliittymässä tarkistamaan, onko tietty avain kartoitettu karttaan vai ei. Se ottaa avainelementin parametriksi ja palauttaa True-arvon, jos kyseinen elementti on kartoitettu karttaan. |
| sisältää Arvon(objekti) | Tätä menetelmää käytetään karttaliittymässä tarkistamaan, kartoitetaanko tietty arvo yhdellä vai useammalla kartan avaimella. Se ottaa arvon parametrina ja palauttaa True-arvon, jos tämä arvo on kartoitettu jollakin kartan avaimesta. |
| entrySet() | Tätä menetelmää käytetään Javan karttaliittymässä luomaan joukko samoista kartan elementeistä. Pohjimmiltaan se palauttaa kartan joukkonäkymän tai voimme luoda uuden joukon ja tallentaa karttaelementit niihin. |
| yhtä suuri (objekti) | Tätä menetelmää käytetään Java Map Interface -sovelluksessa kahden kartan tasa-arvon tarkistamiseen. Se tarkistaa, ovatko yhden parametrina välitetyn kartan elementit yhtä suuria kuin tämän kartan elementit vai eivät. |
| saada (objekti) | Tätä menetelmää käytetään parametrissa mainitulla tietyllä avaimella kartoitetun arvon noutamiseen tai hakemiseen. Se palauttaa NULL-arvon, kun kartta ei sisällä tällaista kartoitusta avaimelle. |
| hash koodin() | Tätä menetelmää käytetään Map Interface -sovelluksessa hajakoodin luomiseen annetulle kartalle, joka sisältää avaimet ja arvot. |
| on tyhjä() | Tätä menetelmää käytetään tarkistamaan, onko kartalla avain- ja arvopareja. Jos kartoitusta ei ole, tämä palauttaa tosi. |
| keySet() | Tätä menetelmää käytetään karttaliittymässä palauttamaan tämän kartan sisältämien avainten joukko-näkymä. Sarjaa tukee kartta, joten kartan muutokset näkyvät joukossa ja päinvastoin. |
| laittaa (objekti, objekti) | Tätä menetelmää käytetään Java Map Interface -sovelluksessa määritetyn arvon liittämiseen tässä kartassa määritettyyn avaimeen. |
| laita kaikki (kartta) | Tätä menetelmää käytetään Javan karttaliittymässä kopioimaan kaikki määritetyn kartan kartoitukset tähän karttaan. |
| poista (objekti) | Tätä menetelmää käytetään karttaliittymässä avaimen kartoituksen poistamiseen tästä kartasta, jos se on kartalla. |
| koko() | Tätä menetelmää käytetään palauttamaan kartassa käytettävissä olevien avain/arvo-parien määrä. |
| arvot() | Tätä menetelmää käytetään Java Map Interfacessa luomaan kokoelma kartan arvoista. Pohjimmiltaan se palauttaa HashMapin arvojen kokoelmanäkymän. |
| getOrDefault(Objektiavain, V oletusarvo) | Palauttaa arvon, johon määritetty avain on yhdistetty, tai oletusarvon, jos tämä kartta ei sisällä avaimen määritystä. |
| yhdistä (K-avain, V-arvo, BiFunction-uudelleenkuvaustoiminto) | Jos määritettyä avainta ei ole jo liitetty arvoon tai se on liitetty tyhjään, liitä se annettuun ei-nolla-arvoon. |
| putIfAbsent(K-avain, V-arvo) | Jos määritettyä avainta ei ole jo liitetty arvoon (tai se on kuvattu nollaan), liittää sen annettuun arvoon ja palauttaa nollan, muussa tapauksessa palauttaa nykyisen liitännäisarvon. |
Esimerkki:
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());> >}> >}> }> |
>
>Lähtö:
a:100 b:200 c:300 d:400>
Luokat, jotka toteuttavat Map-käyttöliittymän, on kuvattu alla olevassa mediassa ja kuvattu myöhemmin seuraavasti:

1. HashMap
HashMap on osa Javan kokoelmaa Java 1.2:sta lähtien. Se tarjoaa Javan karttaliittymän perustoteutuksen. Se tallentaa tiedot (avain, arvo) pareina. Arvon saamiseksi on tiedettävä sen avain. Tämä luokka käyttää Java-nimistä tekniikkaa
// 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());> >}> }> |
>
>Lähtö
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
LinkedHashMap on aivan kuten HashMap, jonka lisäominaisuus ylläpitää siihen lisättyjen elementtien järjestystä. HashMap tarjosi nopean lisäyksen, haun ja poistamisen edun, mutta se ei koskaan säilyttänyt lisäysraitaa ja järjestystä, jonka LinkedHashMap tarjoaa, jossa elementit voidaan käyttää niiden lisäysjärjestyksessä. Katsotaan kuinka luodaan karttaobjekti tämän luokan avulla.
merkkijono jsonobject
Esimerkki
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());> >}> }> |
>
>Lähtö
vishal 10 sachin 30 vaibhav 20>
3. TreeMap
The TreeMap Javassa käytetään toteuttamaan Map-käyttöliittymä ja NavigableMap sekä Abstract Class. Kartta lajitellaan avainten luonnollisen järjestyksen mukaan tai kartan luomishetkellä toimitetulla vertailijalla riippuen siitä, kumpaa rakentajaa käytetään. Tämä osoittautuu tehokkaaksi tavaksi lajitella ja tallentaa avainarvo-pareja. Puukartan ylläpitämän tallennusjärjestyksen on oltava yhdenmukainen yhtäläisten kanssa, kuten minkä tahansa muun lajitellun kartan kanssa, riippumatta eksplisiittisistä vertailijoista. Katsotaan kuinka luodaan karttaobjekti tämän luokan avulla.
Esimerkki
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 anonyymi toiminto
>
>Lähtö
sachin 30 vaibhav 20 vishal 10>
Toimintojen suorittaminen käyttämällä Karttakäyttöliittymä ja HashMap-luokka
Koska Map on käyttöliittymä, sitä voidaan käyttää vain luokan kanssa, joka toteuttaa tämän rajapinnan. Katsotaanpa nyt, kuinka voit suorittaa kartalla muutamia usein käytettyjä toimintoja laajalti käytettyjen toimintojen avulla HashMap-luokka . Ja myös käyttöönoton jälkeen Generics Java 1.5:ssä on mahdollista rajoittaa karttaan tallennettavien objektien tyyppiä.
1. Elementtien lisääminen
Elementin lisäämiseksi karttaan voimme käyttää put()-metodia . Lisäysjärjestystä ei kuitenkaan säilytetä hashmappissa. Sisäisesti jokaiselle elementille luodaan erillinen tiiviste ja elementit indeksoidaan tämän tiivisteen perusteella sen tehostamiseksi.
Esimerkki
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);> >}> }> |
>
>Lähtö
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Vaihteleva elementti
Kun elementit on lisätty, jos haluamme muuttaa elementtiä, se voidaan tehdä lisäämällä elementti uudelleen put()-metodilla. Koska kartan elementit indeksoidaan näppäimillä, avaimen arvoa voidaan muuttaa yksinkertaisesti lisäämällä päivitetty arvo avaimelle, jota haluamme muuttaa.
Esimerkki
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);> >}> }> |
>
>Lähtö
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Elementtien poistaminen
Elementin poistamiseksi kartasta voimme käyttää remove()-menetelmää . Tämä menetelmä ottaa avaimen arvon ja poistaa avaimen kartoituksen tästä kartasta, jos se on kartalla.
Esimerkki
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);> >}> }> |
>
>Lähtö
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Iterointi kartan kautta
On olemassa useita tapoja iteroida kartan läpi. Tunnetuin tapa on käyttää jokaista silmukkaa ja saada avaimet. Avaimen arvo löydetään käyttämällä getValue()-metodia.
Esimerkki
lajiteltu arraylist java
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);> >}> >}> }> |
>
>Lähtö
1 : Geeks 2 : For 3 : Geeks>
5. Laske lukujen esiintyminen Hashmapin avulla
Tässä koodissa käytämme putIfAbsent( ) kera Kokoelmat.frekvenssi() laskea numeroiden tarkka esiintyminen. Monissa ohjelmissa sinun on laskettava tietyn numeron tai kirjaimen esiintyminen. Käytät seuraavaa lähestymistapaa tällaisten ongelmien ratkaisemiseen
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); } }> |
>
>Lähtö
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Usein kysytyt kysymykset Java-karttaliittymässä
Q1. Mikä on karttaliittymä Javassa?
Vastaus:
Kartta sisältää avainarvopareja, joissa pääsemme käsiksi kartan elementteihin avainarvojen avulla.
Q2. Millaisia karttaliitäntöjä Javassa on?
Vastaus:
Karttakäyttöliittymätoteutuksia on kolme: HashMap, LinkedHashMap ja TreeMap.