Zemljevid vsebuje vrednosti na podlagi ključa, tj. para ključ in vrednost. Vsak par ključev in vrednosti je znan kot vnos. Zemljevid vsebuje edinstvene ključe.
Zemljevid je uporaben, če morate iskati, posodobiti ali izbrisati elemente na podlagi ključa.
Java Map Hierarchy
Obstajata dva vmesnika za implementacijo Map v Javi: Map in SortedMap ter trije razredi: HashMap, LinkedHashMap in TreeMap. Hierarhija Java Map je podana spodaj:
Zemljevid ne dovoljuje podvojenih ključev, lahko pa imate podvojene vrednosti. HashMap in LinkedHashMap dovoljujeta ničelne ključe in vrednosti, TreeMap pa ne dovoljuje nobenega ničelnega ključa ali vrednosti.
Zemljevida ni mogoče prečkati, zato ga morate pretvoriti v Set z uporabo keySet() oz enterSet() metoda.
Razred | Opis |
---|---|
HashMap | HashMap je implementacija Map-a, vendar ne vzdržuje nobenega reda. |
LinkedHashMap | LinkedHashMap je implementacija Map. Podeduje razred HashMap. Ohranja vrstni red vstavljanja. |
TreeMap | TreeMap je implementacija Map in SortedMap. Ohranja naraščajoči vrstni red. |
Uporabne metode vmesnika Map
Metoda | Opis |
---|---|
V postavi (ključ predmeta, vrednost predmeta) | Uporablja se za vnos vnosa v zemljevid. |
void putAll (preslikava zemljevida) | Uporablja se za vstavljanje določenega zemljevida v zemljevid. |
V putIfAbsent(ključ K, vrednost V) | Podano vrednost z navedenim ključem vstavi v preslikavo samo, če še ni podana. |
V odstrani (ključ predmeta) | Uporablja se za brisanje vnosa za podani ključ. |
logično odstranjevanje (ključ predmeta, vrednost predmeta) | Iz zemljevida odstrani podane vrednosti s povezanimi podanimi ključi. |
Nastavi keySet() | Vrne pogled Set, ki vsebuje vse ključe. |
Set | Vrne pogled Set, ki vsebuje vse ključe in vrednosti. |
void clear() | Uporablja se za ponastavitev zemljevida. |
V compute (tipka K, BiFunction remappingFunction) | Uporablja se za izračun preslikave za podani ključ in njegovo trenutno preslikano vrednost (ali ničelno, če trenutne preslikave ni). |
V computeIfAbsent(tipka K, funkcija preslikave funkcij) | Uporablja se za izračun njegove vrednosti z uporabo dane funkcije preslikave, če navedeni ključ še ni povezan z vrednostjo (ali je preslikan v nič), in ga vnese v to preslikavo, razen če je nič. |
V computeIfPresent(tipka K, BiFunction remappingFunction) | Uporablja se za izračun nove preslikave glede na ključ in njegovo trenutno preslikano vrednost, če je vrednost podanega ključa prisotna in ni ničelna. |
boolean containsValue(vrednost predmeta) | Ta metoda vrne true, če znotraj zemljevida obstaja vrednost, ki je enaka vrednosti, sicer vrne false. |
boolean containsKey(ključ predmeta) | Ta metoda vrne true, če v preslikavi obstaja nek ključ, ki je enak ključu, sicer vrne false. |
logično je enako (predmet o) | Uporablja se za primerjavo določenega predmeta z zemljevidom. |
void forEach (dejanje BiConsumer) | Izvede dano dejanje za vsak vnos na zemljevidu, dokler niso vsi vnosi obdelani ali dejanje vrže izjemo. |
V get (ključ predmeta) | Ta metoda vrne objekt, ki vsebuje vrednost, povezano s ključem. |
V getOrDefault(ključ predmeta, V defaultValue) | Vrne vrednost, v katero je preslikan podani ključ, ali defaultValue, če preslikava ne vsebuje preslikave za ključ. |
int hashCode() | Vrne vrednost zgoščene kode za zemljevid |
logično isEmpty() | Ta metoda vrne true, če je zemljevid prazen; vrne false, če vsebuje vsaj en ključ. |
V spajanje (tipka K, vrednost V, funkcija preslikave BiFunction) | Če navedeni ključ še ni povezan z vrednostjo ali je povezan z ničelno vrednostjo, ga poveže z dano vrednostjo, ki ni ničelna. |
V zamenjava (tipka K, vrednost V) | Nadomesti podano vrednost za določen ključ. |
logična zamenjava (tipka K, V stara vrednost, V nova vrednost) | Zamenja staro vrednost z novo vrednostjo za določen ključ. |
void replaceAll (funkcija BiFunction) | Zamenja vrednost vsakega vnosa z rezultatom priklica dane funkcije na tem vnosu, dokler niso obdelani vsi vnosi ali funkcija vrže izjemo. |
Vrednosti zbirke () | Vrne pogled zbirke vrednosti, ki jih vsebuje zemljevid. |
int size() | Ta metoda vrne število vnosov na zemljevidu. |
Map.Entry vmesnik
Entry je podvmesnik zemljevida. Tako bomo do njega dostopali z imenom Map.Entry. Vrne pogled zbirke zemljevida, katerega elementi so tega razreda. Ponuja metode za pridobivanje ključa in vrednosti.
Metode vmesnika Map.Entry
Metoda | Opis |
---|---|
K getKey() | Uporablja se za pridobitev ključa. |
V getValue() | Uporablja se za pridobivanje vrednosti. |
int hashCode() | Uporablja se za pridobitev hashCode. |
V setValue(V vrednost) | Uporablja se za zamenjavo vrednosti, ki ustreza temu vnosu, s podano vrednostjo. |
logično je enako (predmet o) | Uporablja se za primerjavo navedenega predmeta z drugimi obstoječimi objekti. |
statična | Vrne primerjalnik, ki primerja predmete v naravnem vrstnem redu na ključu. |
statični primerjalnik | Vrne primerjalnik, ki primerja predmete po ključu z danim primerjalnikom. |
statična | Vrne primerjalnik, ki primerja predmete v naravnem vrstnem redu po vrednosti. |
statični primerjalnik | Vrne primerjalnik, ki primerja predmete po vrednosti z danim primerjalnikom. |
Primer zemljevida Java: nesplošen (star slog)
//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()); } } }
Izhod:
1 Amit 2 Jai 5 Rahul 6 Amit
Primer zemljevida Java: generično (nov slog)
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()); } } }
Izhod:
102 Rahul 100 Amit 101 Vijay
Primer zemljevida 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); } }
Izhod:
100=Amit 101=Vijay 102=Rahul
Primer zemljevida Java: primerjavaByKey() v padajočem vrstnem redu
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); } }
Izhod:
102=Rahul 101=Vijay 100=Amit
Primer zemljevida Java: primerjavaByValue()
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); } }
Izhod:
100=Amit 102=Rahul 101=Vijay
Primer zemljevida Java: primerjavaByValue() v padajočem vrstnem redu
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); } }
Izhod:
101=Vijay 102=Rahul 100=Amit