Interfejs mapy Java
Mapa zawiera wartości na podstawie klucza, czyli pary klucz-wartość. Każda para klucz-wartość nazywana jest wpisem. Mapa zawiera unikalne klucze.
Mapa przydaje się, jeśli trzeba wyszukiwać, aktualizować lub usuwać elementy na podstawie klucza.
Hierarchia mapy Java
Istnieją dwa interfejsy do implementacji Map w Javie: Map i SortedMap oraz trzy klasy: HashMap, LinkedHashMap i TreeMap. Hierarchia mapy Java jest podana poniżej:
Mapa nie pozwala na duplikowanie kluczy, ale możesz mieć zduplikowane wartości. HashMap i LinkedHashMap zezwalają na klucze i wartości zerowe, ale TreeMap nie zezwala na żaden klucz ani wartość zerową.
Mapy nie można przemierzać, dlatego należy ją przekonwertować na Set za pomocą zestaw kluczy() Lub zestaw wpisów() metoda.
| Klasa | Opis |
|---|---|
| HashMapa | HashMap jest implementacją Map, ale nie utrzymuje żadnego porządku. |
| Połączona mapa Hash | LinkedHashMap to implementacja Map. Dziedziczy klasę HashMap. Zachowuje kolejność wstawiania. |
| Mapa Drzewa | TreeMap jest implementacją Map i SortedMap. Zachowuje porządek rosnący. |
Przydatne metody interfejsu Map
| metoda | Opis |
|---|---|
| V put (klucz obiektu, wartość obiektu) | Służy do wstawienia wpisu na mapie. |
| void putAll (mapa mapy) | Służy do wstawienia określonej mapy na mapę. |
| V putIfAbsent(K klucz, wartość V) | Wstawia określoną wartość z określonym kluczem na mapie tylko wtedy, gdy nie została ona jeszcze określona. |
| V usuń (klucz obiektu) | Służy do usuwania wpisu dla określonego klucza. |
| wartość logiczna usuń (klucz obiektu, wartość obiektu) | Usuwa z mapy określone wartości wraz z powiązanymi określonymi kluczami. |
| Ustaw zestaw kluczy() | Zwraca widok Set zawierający wszystkie klucze. |
| Ustawić | Zwraca widok Set zawierający wszystkie klucze i wartości. |
| puste jasne() | Służy do resetowania mapy. |
| Obliczenia V (klawisz K, funkcja ponownego mapowania BiFunction) | Służy do obliczenia mapowania dla określonego klucza i jego aktualnie mapowanej wartości (lub wartości null, jeśli nie ma bieżącego mapowania). |
| V computeIfAbsent (klawisz K, funkcja mapowania funkcji) | Służy do obliczenia jego wartości za pomocą danej funkcji mapującej, jeśli podany klucz nie jest już powiązany z wartością (lub jest odwzorowany na wartość null) i wprowadza go do tego odwzorowania, chyba że ma wartość null. |
| V computeIfPresent (klawisz K, funkcja remapowania BiFunction) | Służy do obliczenia nowego mapowania, biorąc pod uwagę klucz i jego aktualnie odwzorowaną wartość, jeśli wartość dla określonego klucza jest obecna i nie jest null. |
| wartość logiczna zawiera wartość (wartość obiektu) | Ta metoda zwraca wartość true, jeśli na mapie istnieje wartość równa wartości, w przeciwnym razie zwraca wartość false. |
| wartość logiczna zawiera klucz (klucz obiektu) | Ta metoda zwraca wartość true, jeśli na mapie istnieje klucz równy temu kluczowi, w przeciwnym razie zwraca wartość false. |
| wartość logiczna równa się (obiekt o) | Służy do porównania określonego Obiektu z Mapą. |
| void forEach (akcja BiConsumer) | Wykonuje daną akcję dla każdego wpisu na mapie, dopóki wszystkie wpisy nie zostaną przetworzone lub akcja nie zgłosi wyjątku. |
| V get (klucz obiektu) | Ta metoda zwraca obiekt zawierający wartość powiązaną z kluczem. |
| V getOrDefault (klucz obiektu, V wartość domyślna) | Zwraca wartość, na którą odwzorowany jest określony klucz, lub wartość domyślną, jeśli mapa nie zawiera mapowania dla klucza. |
| int kod hash() | Zwraca wartość kodu skrótu dla mapy |
| wartość logiczna jest pusta() | Ta metoda zwraca wartość true, jeśli mapa jest pusta; zwraca false, jeśli zawiera co najmniej jeden klucz. |
| Scalanie V (klawisz K, wartość V, funkcja ponownego mapowania BiFunction) | Jeśli określony klucz nie jest już powiązany z wartością lub jest powiązany z wartością null, kojarzy go z podaną wartością inną niż null. |
| Zamień V (klawisz K, wartość V) | Zastępuje określoną wartość dla określonego klucza. |
| zamiana logiczna (klawisz K, V stara wartość, V nowa wartość) | Zastępuje starą wartość nową wartością dla określonego klucza. |
| nieważne zamień wszystko (funkcja BiFunction) | Zastępuje wartość każdego wpisu wynikiem wywołania danej funkcji dla tego wpisu, dopóki wszystkie wpisy nie zostaną przetworzone lub funkcja nie zgłosi wyjątku. |
| Wartości kolekcji() | Zwraca widok kolekcji wartości zawartych na mapie. |
| rozmiar całkowity() | Ta metoda zwraca liczbę wpisów na mapie. |
Interfejs mapy.Entry
Wejście jest podinterfejsem Map. Będziemy więc mieli do niego dostęp po nazwie Map.Entry. Zwraca widok kolekcji mapy, której elementy należą do tej klasy. Zapewnia metody uzyskiwania klucza i wartości.
Metody interfejsu Map.Entry
| metoda | Opis |
|---|---|
| K getKey() | Służy do uzyskania klucza. |
| V getValue() | Służy do uzyskania wartości. |
| int kod hash() | Służy do uzyskania hashCode. |
| V setValue (wartość V) | Służy do zastąpienia wartości odpowiadającej temu wpisowi określoną wartością. |
| wartość logiczna równa się (obiekt o) | Służy do porównania określonego obiektu z innymi istniejącymi obiektami. |
| statyczny | Zwraca komparator, który porównuje obiekty w naturalnej kolejności na kluczu. |
| komparator statyczny | Zwraca komparator, który porównuje obiekty według klucza przy użyciu danego komparatora. |
| statyczny | Zwraca komparator, który porównuje obiekty w kolejności naturalnej według wartości. |
| komparator statyczny | Zwraca komparator, który porównuje obiekty według wartości przy użyciu danego komparatora. |
Przykład mapy Java: nieogólna (w starym stylu)
//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()); } } } Wyjście:
1 Amit 2 Jai 5 Rahul 6 Amit
Przykład mapy Java: ogólna (nowy 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()); } } } Wyjście:
102 Rahul 100 Amit 101 Vijay
Przykład mapy Java: porównanieByKey()
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); } } Wyjście:
100=Amit 101=Vijay 102=Rahul
Przykład mapy Java: porównanieByKey() w kolejności malejącej
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); } } Wyjście:
102=Rahul 101=Vijay 100=Amit
Przykład mapy Java: porównanieByValue()
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); } } Wyjście:
100=Amit 102=Rahul 101=Vijay
Przykład mapy Java: porównanieByValue() w kolejności malejącej
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); } } Wyjście:
101=Vijay 102=Rahul 100=Amit