Mapa obsahuje hodnoty na základě klíče, tedy páru klíč a hodnota. Každý pár klíče a hodnoty je znám jako položka. Mapa obsahuje jedinečné klíče.
Mapa je užitečná, pokud musíte vyhledávat, aktualizovat nebo mazat prvky na základě klíče.
Hierarchie map Java
Existují dvě rozhraní pro implementaci Map v Javě: Map a SortedMap a tři třídy: HashMap, LinkedHashMap a TreeMap. Hierarchie Java Map je uvedena níže:
Mapa neumožňuje duplicitní klíče, ale můžete mít duplicitní hodnoty. HashMap a LinkedHashMap umožňují nulové klíče a hodnoty, ale TreeMap žádný nulový klíč ani hodnotu nepovoluje.
es5 vs es6
Mapu nelze procházet, takže ji musíte převést na Set using keySet() nebo entrySet() metoda.
Třída | Popis |
---|---|
HashMap | HashMap je implementace Map, ale neudržuje žádný řád. |
LinkedHashMap | LinkedHashMap je implementace Map. Zdědí třídu HashMap. Udržuje pořadí vložení. |
Stromová mapa | TreeMap je implementace Map a SortedMap. Udržuje vzestupné pořadí. |
Užitečné metody mapového rozhraní
Metoda | Popis |
---|---|
V put (klíč objektu, hodnota objektu) | Slouží k vložení záznamu do mapy. |
void putAll (mapa mapy) | Slouží k vložení zadané mapy do mapy. |
V putIfAbsent (klíč K, hodnota V) | Zadanou hodnotu se zadaným klíčem vloží do mapy pouze v případě, že ještě není zadaná. |
V odstranit (klíč objektu) | Používá se k odstranění položky pro zadaný klíč. |
booleovské odstranění (klíč objektu, hodnota objektu) | Odebere z mapy zadané hodnoty s přidruženými zadanými klíči. |
Set keySet() | Vrátí zobrazení Set obsahující všechny klíče. |
Soubor | Vrátí zobrazení Set obsahující všechny klíče a hodnoty. |
void clear() | Slouží k resetování mapy. |
V compute (klíč K, BiFunction remappingFunction) | Používá se k výpočtu mapování pro zadaný klíč a jeho aktuální mapovanou hodnotu (nebo null, pokud neexistuje žádné aktuální mapování). |
V computeIfAbsent (klávesa K, funkce mapování funkcí) | Používá se k výpočtu její hodnoty pomocí dané mapovací funkce, pokud zadaný klíč ještě není spojen s hodnotou (nebo je namapován na hodnotu null), a vloží ji do této mapy, pokud není null. |
V computeIfPresent (klávesa K, přemapování funkce BiFunction) | Používá se k výpočtu nového mapování daného klíče a jeho aktuální namapované hodnoty, pokud je hodnota pro zadaný klíč přítomna a není nulová. |
boolean obsahujeValue(hodnota objektu) | Tato metoda vrátí hodnotu true, pokud v mapě existuje nějaká hodnota rovna hodnotě, jinak vrátí hodnotu false. |
boolean obsahujeKey (klíč objektu) | Tato metoda vrátí hodnotu true, pokud v mapě existuje klíč rovný tomuto klíči, jinak vrátí hodnotu false. |
boolean rovná se (objekt o) | Používá se k porovnání zadaného objektu s mapou. |
void forEach (akce BiConsumer) | Provádí danou akci pro každý záznam v mapě, dokud nejsou zpracovány všechny záznamy nebo akce vyvolá výjimku. |
V get (klíč objektu) | Tato metoda vrátí objekt, který obsahuje hodnotu přidruženou ke klíči. |
V getOrDefault (klíč objektu, V defaultValue) | Vrátí hodnotu, na kterou je zadaný klíč mapován, nebo defaultValue, pokud mapa neobsahuje žádné mapování pro klíč. |
int hashCode() | Vrací hodnotu hash kódu pro mapu |
boolean isEmpty() | Tato metoda vrátí hodnotu true, pokud je mapa prázdná; vrátí false, pokud obsahuje alespoň jeden klíč. |
V merge (klíč K, hodnota V, funkce přemapování BiFunction) | Pokud zadaný klíč ještě není přidružen k hodnotě nebo je přidružen k hodnotě null, přidruží jej k dané jiné hodnotě. |
V nahradit (klíč K, hodnota V) | Nahradí zadanou hodnotu za zadaný klíč. |
booleovské nahrazení (klíč K, V stará hodnota, V nová hodnota) | Nahradí starou hodnotu novou hodnotou pro zadaný klíč. |
void nahradit vše (funkce BiFunction) | Nahradí hodnotu každé položky výsledkem vyvolání dané funkce na této položce, dokud nebudou zpracovány všechny položky nebo funkce vyvolá výjimku. |
Hodnoty sbírky () | Vrátí zobrazení kolekce hodnot obsažených v mapě. |
int size() | Tato metoda vrací počet záznamů v mapě. |
Rozhraní Map.Entry
Vstup je podrozhraním mapy. Takže k němu budeme přistupovat podle názvu Map.Entry. Vrací pohled kolekce mapy, jejíž prvky patří do této třídy. Poskytuje metody, jak získat klíč a hodnotu.
Metody rozhraní Map.Entry
Metoda | Popis |
---|---|
K getKey() | Slouží k získání klíče. |
V getValue() | Používá se k získání hodnoty. |
int hashCode() | Používá se k získání hashCode. |
V setValue (hodnota V) | Slouží k nahrazení hodnoty odpovídající tomuto záznamu zadanou hodnotou. |
boolean rovná se (objekt o) | Používá se k porovnání zadaného objektu s ostatními existujícími objekty. |
statický | Vrací komparátor, který porovnává objekty v přirozeném pořadí na klíči. |
statický komparátor | Vrací komparátor, který porovnává objekty podle klíče pomocí daného komparátoru. |
statický | Vrací komparátor, který porovnává objekty v přirozeném pořadí podle hodnoty. |
statický komparátor | Vrací komparátor, který porovnává objekty podle hodnoty pomocí daného komparátoru. |
Příklad mapy Java: Negenerická (starý styl)
//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()); } } }
Výstup:
1 Amit 2 Jai 5 Rahul 6 Amit
Příklad mapy Java: Obecný (nový styl)
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()); } } }
Výstup:
pár c++
102 Rahul 100 Amit 101 Vijay
Příklad mapy Java: 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); } }
Výstup:
100=Amit 101=Vijay 102=Rahul
Příklad mapy Java: comparingByKey() v sestupném pořadí
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); } }
Výstup:
102=Rahul 101=Vijay 100=Amit
Příklad mapy Java: 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); } }
Výstup:
100=Amit 102=Rahul 101=Vijay
Příklad mapy Java: comparingByValue() v sestupném pořadí
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); } }
Výstup:
101=Vijay 102=Rahul 100=Amit