Kartta sisältää arvot avaimen eli avain- ja arvoparin perusteella. Jokainen avain- ja arvopari tunnetaan merkinnänä. Kartta sisältää ainutlaatuiset avaimet.
Kartta on hyödyllinen, jos joudut etsimään, päivittämään tai poistamaan elementtejä avaimen perusteella.
Java-karttojen hierarkia
Kartan toteuttamiseen javassa on kaksi käyttöliittymää: Map ja SortedMap sekä kolme luokkaa: HashMap, LinkedHashMap ja TreeMap. Java-kartan hierarkia on annettu alla:
Kartta ei salli päällekkäisiä avaimia, mutta sinulla voi olla päällekkäisiä arvoja. HashMap ja LinkedHashMap sallivat nolla-avaimet ja -arvot, mutta TreeMap ei salli mitään nolla-avainta tai arvoa.
Kartta ei voi kulkea, joten sinun on muutettava se Aseta käyttämällä keySet() tai entrySet() menetelmä.
| Luokka | Kuvaus |
|---|---|
| HashMap | HashMap on Mapin toteutus, mutta se ei ylläpidä järjestystä. |
| LinkedHashMap | LinkedHashMap on Mapin toteutus. Se perii HashMap-luokan. Se ylläpitää lisäysjärjestystä. |
| TreeMap | TreeMap on Map- ja SortedMap-toteutus. Se ylläpitää nousevaa järjestystä. |
Hyödyllisiä karttarajapinnan menetelmiä
| Menetelmä | Kuvaus |
|---|---|
| V put (Objektiavain, Objektin arvo) | Sitä käytetään merkinnän lisäämiseen karttaan. |
| void putAll (karttakartta) | Sitä käytetään määritetyn kartan lisäämiseen karttaan. |
| V putIfAbsent (K-avain, V-arvo) | Se lisää määritetyn arvon määritetyllä avaimella karttaan vain, jos sitä ei ole jo määritetty. |
| V poista (objektiavain) | Sitä käytetään määritetyn avaimen merkinnän poistamiseen. |
| looginen poista (objektiavain, objektin arvo) | Se poistaa määritetyt arvot ja niihin liittyvät määritetyt avaimet kartalta. |
| Aseta keySet() | Se palauttaa Set-näkymän, joka sisältää kaikki avaimet. |
| Aseta | Se palauttaa Set-näkymän, joka sisältää kaikki avaimet ja arvot. |
| void clear () | Sitä käytetään kartan nollaamiseen. |
| V-laskenta (K-avain, BiFunction-uudelleenkuvausfunktio) | Sitä käytetään määritetyn avaimen ja sen nykyisen kartoitetun arvon (tai nollan, jos nykyistä kartoitusta ei ole) määrittämiseen. |
| V computeIfAbsent (K-näppäin, Funktiokartoitustoiminto) | Sitä käytetään sen arvon laskemiseen käyttämällä annettua kuvausfunktiota, jos määritettyä avainta ei ole jo liitetty arvoon (tai se on kuvattu nollaan), ja syöttää sen tähän karttaan, ellei se ole nolla. |
| V computeIfPresent (K-näppäin, BiFunction-uudelleenkuvausfunktio) | Sitä käytetään uuden kuvauksen laskemiseen avaimella ja sen nykyisellä kuvatulla arvolla, jos määritetyn avaimen arvo on läsnä ja ei ole nolla. |
| boolean sisältääValue(objektiarvo) | Tämä menetelmä palauttaa tosi, jos jokin arvoa vastaava arvo on kartassa, muussa tapauksessa palauttaa epätosi. |
| boolean sisältääKey(Objektiavain) | Tämä menetelmä palauttaa tosi, jos jokin avainta vastaava avain on kartassa, muussa tapauksessa palauttaa epätosi. |
| boolen yhtä kuin (objekti o) | Sitä käytetään vertaamaan määritettyä objektia karttaan. |
| void forEach (kahden kuluttajan toiminta) | Se suorittaa annetun toiminnon jokaiselle kartan merkinnälle, kunnes kaikki merkinnät on käsitelty tai toiminto tekee poikkeuksen. |
| V get (objektiavain) | Tämä menetelmä palauttaa objektin, joka sisältää avaimeen liittyvän arvon. |
| V getOrDefault (Objektiavain, V oletusarvo) | Se palauttaa arvon, johon määritetty avain on kartoitettu, tai oletusarvon, jos kartta ei sisällä avaimelle kartoitusta. |
| int hashCode() | Se palauttaa kartan hash-koodin arvon |
| boolean isEmpty() | Tämä menetelmä palauttaa tosi, jos kartta on tyhjä; palauttaa false, jos se sisältää vähintään yhden avaimen. |
| V yhdistä (K-avain, V-arvo, BiFunction-uudelleenkuvaustoiminto) | Jos määritettyä avainta ei ole jo liitetty arvoon tai se on liitetty tyhjään, liittää sen annettuun ei-nolla-arvoon. |
| V korvaa (K-avain, V-arvo) | Se korvaa määritetyn avaimen määritetyn arvon. |
| boolen korvaa (K-avain, V vanha arvo, V uusi arvo) | Se korvaa vanhan arvon määritetyn avaimen uudella arvolla. |
| void korvaa kaikki (BiFunction-toiminto) | Se korvaa jokaisen merkinnän arvon tuloksella, jolla kyseistä toimintoa kutsutaan kyseisessä merkinnässä, kunnes kaikki merkinnät on käsitelty tai funktio tekee poikkeuksen. |
| Kokoelman arvot() | Se palauttaa kokoelmanäkymän kartan sisältämistä arvoista. |
| int size () | Tämä menetelmä palauttaa merkintöjen määrän kartalla. |
Map.Entry Interface
Entry on Mapin aliliittymä. Joten pääsemme siihen Map.Entry-nimellä. Se palauttaa kokoelmanäkymän kartasta, jonka elementit ovat tätä luokkaa. Se tarjoaa menetelmiä avaimen ja arvon saamiseksi.
Map.Entry-käyttöliittymän menetelmät
| Menetelmä | Kuvaus |
|---|---|
| K getKey() | Sitä käytetään avaimen hankkimiseen. |
| V getValue() | Sitä käytetään arvon hankkimiseen. |
| int hashCode() | Sitä käytetään hajakoodin saamiseksi. |
| V setArvo(V-arvo) | Sitä käytetään korvaamaan tätä merkintää vastaava arvo määritetyllä arvolla. |
| boolen yhtä kuin (objekti o) | Sitä käytetään vertaamaan määritettyä objektia muihin olemassa oleviin objekteihin. |
| staattinen | Se palauttaa vertailijan, joka vertaa objekteja luonnollisessa järjestyksessä avaimella. |
| staattinen vertailija | Se palauttaa vertailijan, joka vertaa objekteja avaimella käyttämällä annettua vertailijaa. |
| staattinen | Se palauttaa vertailijan, joka vertaa objekteja luonnollisessa järjestyksessä arvon mukaan. |
| staattinen vertailija | Se palauttaa vertailijan, joka vertaa objekteja arvon mukaan käyttämällä annettua vertailijaa. |
Java-karttaesimerkki: ei-yleinen (vanha tyyli)
//Non-generic import java.util.*; public class MapExample1 { public static void main(String[] args) { Map map=new HashMap(); //Adding elements to map map.put(1,'Amit'); map.put(5,'Rahul'); map.put(2,'Jai'); map.put(6,'Amit'); //Traversing Map Set set=map.entrySet();//Converting to Set so that we can traverse Iterator itr=set.iterator(); while(itr.hasNext()){ //Converting to Map.Entry so that we can get key and value separately Map.Entry entry=(Map.Entry)itr.next(); System.out.println(entry.getKey()+' '+entry.getValue()); } } } Lähtö:
1 Amit 2 Jai 5 Rahul 6 Amit
Java-karttaesimerkki: yleinen (uusi tyyli)
import java.util.*; class MapExample2{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Elements can traverse in any order for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } Lähtö:
102 Rahul 100 Amit 101 Vijay
Java-karttaesimerkki: comparingByKey()
import java.util.*; class MapExample3{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey()) //Performs an action for each element of this stream .forEach(System.out::println); } } Lähtö:
100=Amit 101=Vijay 102=Rahul
Java-karttaesimerkki: comparingByKey() laskevassa järjestyksessä
import java.util.*; class MapExample4{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } } Lähtö:
102=Rahul 101=Vijay 100=Amit
Java-karttaesimerkki: comparingByValue()
import java.util.*; class MapExample5{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue()) //Performs an action for each element of this stream .forEach(System.out::println); } } Lähtö:
100=Amit 102=Rahul 101=Vijay
Java-karttaesimerkki: comparingByValue() laskevassa järjestyksessä
import java.util.*; class MapExample6{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } } Lähtö:
101=Vijay 102=Rahul 100=Amit