logo

Interfejs mapy w Javie

W Javie interfejs mapy jest obecny w pakiecie java.util i reprezentuje mapowanie pomiędzy kluczem i wartością. Interfejs Java Map nie jest podtypem interfejsu Interfejs kolekcji . Dlatego zachowuje się nieco inaczej niż pozostałe typy kolekcji. Mapa zawiera unikalne klucze.

Geekowie, burza mózgów powinna być dlaczego i kiedy korzystać z Map.

Mapy doskonale nadają się do mapowania powiązań klucz-wartość, takich jak słowniki. Mapy służą do wyszukiwania według kluczy lub gdy ktoś chce odzyskać i zaktualizować elementy według kluczy. Niektóre typowe scenariusze są następujące:



  • Mapa kodów błędów i ich opisy.
  • Mapa kodów pocztowych i miast.
  • Mapa menedżerów i pracowników. Każdy menedżer (klucz) jest powiązany z listą pracowników (wartości), którymi zarządza.
  • Mapa klas i uczniów. Każda klasa (klucz) jest powiązana z listą uczniów (wartość).

Interfejs mapy w Javie

Tworzenie obiektów mapy

Ponieważ Mapa jest interfejs , nie można tworzyć obiektów typu map. Zawsze potrzebujemy klasy, która rozszerza tę mapę, aby utworzyć obiekt. A także po wprowadzeniu Genetyki w Javie 1.5 możliwe jest ograniczenie typu obiektu, który może być przechowywany na mapie.

Składnia: Definiowanie mapy bezpiecznej typu

Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>

Charakterystyka interfejsu mapy

  1. Mapa nie może zawierać zduplikowanych kluczy, a każdy klucz może być mapowany na co najwyżej jedną wartość. Niektóre implementacje dopuszczają klucz null i wartości null, takie jak HashMap i LinkedHashMap , ale niektóre nie lubią Mapa Drzewa .
  2. Kolejność mapy zależy od konkretnych implementacji. Na przykład, Mapa Drzewa i LinkedHashMap mają przewidywalne porządki, podczas gdy HashMap nie.
  3. Istnieją dwa interfejsy do implementacji Map w Javie. Są to Map i SortedMap oraz trzy klasy: HashMap, TreeMap i LinkedHashMap.

Metody w interfejsie mapy Java

metoda Przedsięwzięcie wykonane
jasne() Ta metoda jest używana w interfejsie Java Map w celu wyczyszczenia i usunięcia wszystkich elementów lub odwzorowań z określonej kolekcji Map.
zawiera klucz (obiekt) Ta metoda jest używana w interfejsie mapy w Javie do sprawdzania, czy określony klucz jest mapowany na mapę, czy nie. Przyjmuje element kluczowy jako parametr i zwraca True, jeśli ten element jest zamapowany na mapie.
zawiera wartość (obiekt) Ta metoda jest używana w interfejsie mapy w celu sprawdzenia, czy konkretna wartość jest mapowana przez jeden, czy więcej niż jeden klucz na mapie. Przyjmuje wartość jako parametr i zwraca True, jeśli ta wartość jest mapowana przez którykolwiek z kluczy na mapie.
zestaw wpisów() Ta metoda jest używana w interfejsie mapy w Javie do tworzenia zestawu tych samych elementów zawartych na mapie. Zasadniczo zwraca ustawiony widok mapy lub możemy utworzyć nowy zestaw i przechowywać w nim elementy mapy.
równa się (obiekt) Ta metoda jest używana w interfejsie mapy Java w celu sprawdzenia równości między dwiema mapami. Sprawdza, czy elementy jednej mapy przekazane jako parametr są równe elementom tej mapy, czy nie.
pobierz (obiekt) Ta metoda służy do pobierania lub pobierania wartości mapowanej przez konkretny klucz wymieniony w parametrze. Zwraca NULL, gdy mapa nie zawiera takiego mapowania dla klucza.
hashCode() Ta metoda jest używana w interfejsie mapy do generowania kodu hashCode dla danej mapy zawierającej klucze i wartości.
jest pusty() Ta metoda służy do sprawdzania, czy mapa zawiera jakikolwiek wpis dla par klucz-wartość. Jeśli nie istnieje żadne mapowanie, zwracana jest wartość true.
zestaw kluczy() Ta metoda jest używana w interfejsie mapy w celu zwrócenia widoku zestawu kluczy zawartych na tej mapie. Zestaw jest wspierany przez mapę, więc zmiany na mapie są odzwierciedlane w zestawie i odwrotnie.
put(obiekt, obiekt) Ta metoda jest używana w interfejsie mapy Java w celu powiązania określonej wartości z określonym kluczem w tej mapie.
umieść wszystko (mapa) Ta metoda jest używana w interfejsie mapy w Javie do kopiowania wszystkich odwzorowań z określonej mapy na tę mapę.
usuń (obiekt) Ta metoda jest używana w interfejsie mapy w celu usunięcia mapowania klucza z tej mapy, jeśli jest on obecny na mapie.
rozmiar() Ta metoda służy do zwracania liczby par klucz/wartość dostępnych na mapie.
wartości() Ta metoda jest używana w interfejsie mapy Java do tworzenia kolekcji na podstawie wartości mapy. Zasadniczo zwraca widok kolekcji wartości w HashMap.
getOrDefault (klucz obiektu, wartość domyślna V) Zwraca wartość, na którą jest mapowany określony klucz, lub wartość domyślną, jeśli ta mapa nie zawiera mapowania klucza.
merge (klawisz K, wartość V, funkcja remapowania BiFunction) Jeśli określony klucz nie jest już powiązany z wartością lub jest powiązany z wartością null, skojarz go z podaną wartością inną niż null.
putIfAbsent(klawisz K, wartość V) Jeśli określony klucz nie jest już powiązany z wartością (lub jest odwzorowany na wartość null), wiąże go z podaną wartością i zwraca wartość null, w przeciwnym razie zwraca bieżącą wartość skojarzoną.

Przykład:

Jawa




// 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());> >}> >}> }>

>

>

Wyjście:

a:100 b:200 c:300 d:400>

Klasy implementujące interfejs Map są przedstawione w poniższych multimediach i opisane w dalszej części w następujący sposób:

Interfejs mapy

1. Mapa skrótów

HashMapa jest częścią kolekcji Java od wersji Java 1.2. Zapewnia podstawową implementację interfejsu Map w Javie. Przechowuje dane w parach (klucz, wartość). Aby uzyskać dostęp do wartości, należy znać jej klucz. W tej klasie zastosowano technikę zwaną Javą




// 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());> >}> }>

>

byki kontra wół

>

Wyjście

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap działa podobnie jak HashMap z dodatkową możliwością zachowania kolejności wstawianych do niej elementów. HashMap zapewniał możliwość szybkiego wstawiania, wyszukiwania i usuwania, ale nigdy nie zachowywał ścieżki i kolejności wstawiania, które zapewnia LinkedHashMap, gdzie można uzyskać dostęp do elementów w kolejności ich wstawiania. Zobaczmy, jak utworzyć obiekt mapy przy użyciu tej klasy.

Przykład

Jawa




// 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());> >}> }>

>

>

Wyjście

coś szybkiego
vishal 10 sachin 30 vaibhav 20>

3. Mapa drzewa

The TreeMap w Javie służy do implementacji interfejsu Map i NavigableMap wraz z klasą abstrakcyjną. Mapa jest sortowana według naturalnego porządku kluczy lub według komparatora dostarczonego podczas tworzenia mapy, w zależności od użytego konstruktora. Okazuje się, że jest to skuteczny sposób sortowania i przechowywania par klucz-wartość. Porządek przechowywania utrzymywany przez mapę drzewa musi być spójny z równościami, tak jak każda inna posortowana mapa, niezależnie od jawnych komparatorów. Zobaczmy, jak utworzyć obiekt mapy przy użyciu tej klasy.

Przykład

Jawa




// 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());> >}> }>

>

>

Wyjście

sachin 30 vaibhav 20 vishal 10>

Wykonywanie operacji za pomocą Interfejs mapy I Klasa HashMap

Ponieważ Map jest interfejsem, można go używać tylko z klasą, która implementuje ten interfejs. Zobaczmy teraz, jak wykonać kilka często używanych operacji na Mapie, korzystając z powszechnie używanych Klasa HashMap . A także po wprowadzeniu Genetyki w Javie 1.5 możliwe jest ograniczenie typu obiektu, który może być przechowywany na mapie.

1. Dodawanie elementów

Aby dodać element do mapy możemy skorzystać z metody put(). Jednak kolejność wstawiania nie jest zachowywana w mapie mieszającej. Wewnętrznie dla każdego elementu generowany jest oddzielny skrót, a elementy są indeksowane na podstawie tego skrótu, aby zwiększyć wydajność.

Przykład

Jawa


ciąg.wartość 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);> >}> }>

>

>

Wyjście

{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}>

2. Zmiana elementu

Jeżeli po dodaniu elementów chcemy zmienić element, można to zrobić poprzez ponowne dodanie elementu metodą put(). Ponieważ elementy na mapie są indeksowane za pomocą kluczy, wartość klucza można zmienić, po prostu wstawiając zaktualizowaną wartość klucza, dla którego chcemy zmienić.

Przykład

Jawa




// 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);> >}> }>

>

>

Wyjście

Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. Usuwanie elementów

Aby usunąć element z Mapy możemy skorzystać z metody usuwania(). Ta metoda pobiera wartość klucza i usuwa mapowanie klucza z tej mapy, jeśli jest on obecny na mapie.

Przykład

Jawa




// 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);> >}> }>

bash dla pętli
>

>

Wyjście

{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}>

4. Iteracja po mapie

Istnieje wiele sposobów iteracji po mapie. Najbardziej znanym sposobem jest użycie pętli for-each i pobranie kluczy. Wartość klucza ustala się za pomocą metody getValue().

Przykład

Jawa




// 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);> >}> >}> }>

>

>

Wyjście

1 : Geeks 2 : For 3 : Geeks>

5. Policz występowanie liczb za pomocą Hashmap

W tym kodzie używamy putIfNieobecny( ) wraz z Kolekcje.częstotliwość() policzyć dokładne wystąpienie liczb. W wielu programach trzeba policzyć wystąpienie określonej cyfry lub litery. Aby rozwiązać tego typu problemy, stosuje się następujące podejście

Jawa




// 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); } }>

>

>

Wyjście

{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}>

Często zadawane pytania dotyczące interfejsu mapy Java

Pytanie 1. Co to jest interfejs mapy w Javie?

Odpowiedź:

Mapa zawiera pary klucz-wartość, do których uzyskujemy dostęp do elementów mapy za pomocą wartości kluczy.

Pytanie 2. Jakie są typy interfejsów map w Javie?

Odpowiedź:

Istnieją 3 implementacje interfejsu mapy: HashMap, LinkedHashMap i TreeMap.