logo

Kartenschnittstelle in Java

In Java ist Map Interface im Paket java.util vorhanden und stellt eine Zuordnung zwischen einem Schlüssel und einem Wert dar. Die Java Map-Schnittstelle ist kein Untertyp von Sammlungsschnittstelle . Daher verhält es sich etwas anders als die übrigen Sammlungstypen. Eine Karte enthält eindeutige Schlüssel.

Geeks, der Brainstormer hätte es sein sollen Warum und wann Sie Maps verwenden sollten.

Karten eignen sich perfekt für die Zuordnung von Schlüssel-Wert-Assoziationen, beispielsweise in Wörterbüchern. Die Karten werden verwendet, um Suchvorgänge nach Schlüsseln durchzuführen oder wenn jemand Elemente nach Schlüsseln abrufen und aktualisieren möchte. Einige häufige Szenarien sind wie folgt:



  • Eine Karte mit Fehlercodes und deren Beschreibungen.
  • Eine Karte mit Postleitzahlen und Städten.
  • Eine Karte von Managern und Mitarbeitern. Jedem Manager (Schlüssel) ist eine Liste der Mitarbeiter (Wert) zugeordnet, die er verwaltet.
  • Eine Karte der Klassen und Schüler. Jeder Klasse (Schlüssel) ist eine Liste von Schülern (Wert) zugeordnet.

Kartenschnittstelle in Java

Kartenobjekte erstellen

Da Map ein ist Schnittstelle , können keine Objekte vom Typ Map erstellt werden. Wir benötigen immer eine Klasse, die diese Karte erweitert, um ein Objekt zu erstellen. Und auch nach der Einführung von Generika In Java 1.5 ist es möglich, den Objekttyp einzuschränken, der in der Map gespeichert werden kann.

Syntax: Definieren einer typsicheren Karte

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

Eigenschaften einer Kartenschnittstelle

  1. Eine Map darf keine doppelten Schlüssel enthalten und jeder Schlüssel kann höchstens einem Wert zugeordnet werden. Einige Implementierungen erlauben Nullschlüssel und Nullwerte wie HashMap und LinkedHashMap , aber einige mögen das nicht TreeMap .
  2. Die Reihenfolge einer Karte hängt von den spezifischen Implementierungen ab. Zum Beispiel, TreeMap und LinkedHashMap haben vorhersehbare Reihenfolgen, HashMap hingegen nicht.
  3. Es gibt zwei Schnittstellen zum Implementieren von Map in Java. Es handelt sich um Map und SortedMap sowie um drei Klassen: HashMap, TreeMap und LinkedHashMap.

Methoden in der Java Map-Schnittstelle

Methode Handlung ausgeführt
klar() Diese Methode wird im Java Map Interface verwendet, um alle Elemente oder Zuordnungen aus einer angegebenen Map-Sammlung zu löschen und zu entfernen.
enthältKey(Objekt) Diese Methode wird im Map Interface in Java verwendet, um zu überprüfen, ob ein bestimmter Schlüssel in die Map abgebildet wird oder nicht. Es verwendet das Schlüsselelement als Parameter und gibt „True“ zurück, wenn dieses Element in der Karte zugeordnet ist.
enthältWert(Objekt) Diese Methode wird im Map Interface verwendet, um zu überprüfen, ob ein bestimmter Wert durch einen einzelnen oder mehr als einen Schlüssel in der Map abgebildet wird. Es nimmt den Wert als Parameter und gibt „True“ zurück, wenn dieser Wert durch einen der Schlüssel in der Zuordnung zugeordnet wird.
EintragSet() Diese Methode wird im Map Interface in Java verwendet, um einen Satz aus denselben Elementen zu erstellen, die in der Karte enthalten sind. Es gibt im Grunde eine festgelegte Ansicht der Karte zurück, oder wir können ein neues Set erstellen und die Kartenelemente darin speichern.
gleicht(Objekt) Diese Methode wird im Java Map Interface verwendet, um die Gleichheit zwischen zwei Karten zu prüfen. Es prüft, ob die als Parameter übergebenen Elemente einer Karte mit den Elementen dieser Karte übereinstimmen oder nicht.
get(Objekt) Diese Methode wird verwendet, um den Wert abzurufen oder abzurufen, der durch einen bestimmten im Parameter genannten Schlüssel zugeordnet wird. Es gibt NULL zurück, wenn die Karte keine solche Zuordnung für den Schlüssel enthält.
Hash-Code() Diese Methode wird im Map Interface verwendet, um einen HashCode für die angegebene Karte zu generieren, der Schlüssel und Werte enthält.
ist leer() Mit dieser Methode wird überprüft, ob eine Karte einen Eintrag für Schlüssel-Wert-Paare enthält. Wenn keine Zuordnung vorhanden ist, wird true zurückgegeben.
Schlüsselsatz() Diese Methode wird im Map Interface verwendet, um eine Set-Ansicht der in dieser Map enthaltenen Schlüssel zurückzugeben. Der Satz wird durch die Karte unterstützt, sodass Änderungen an der Karte im Satz widergespiegelt werden und umgekehrt.
put(Objekt, Objekt) Diese Methode wird im Java Map Interface verwendet, um den angegebenen Wert dem angegebenen Schlüssel in dieser Karte zuzuordnen.
putAll(Map) Diese Methode wird im Map Interface in Java verwendet, um alle Zuordnungen von der angegebenen Karte in diese Karte zu kopieren.
entfernen(Objekt) Diese Methode wird im Map Interface verwendet, um die Zuordnung für einen Schlüssel aus dieser Map zu entfernen, sofern er in der Map vorhanden ist.
Größe() Diese Methode wird verwendet, um die Anzahl der in der Karte verfügbaren Schlüssel/Wert-Paare zurückzugeben.
Werte() Diese Methode wird im Java Map Interface verwendet, um eine Sammlung aus den Werten der Karte zu erstellen. Es gibt im Grunde eine Sammlungsansicht der Werte in der HashMap zurück.
getOrDefault(Objektschlüssel, V defaultValue) Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder defaultValue, wenn diese Zuordnung keine Zuordnung für den Schlüssel enthält.
merge(K-Taste, V-Wert, BiFunction remappingFunction) Wenn der angegebene Schlüssel noch keinem Wert zugeordnet ist oder mit Null verknüpft ist, verknüpfen Sie ihn mit dem angegebenen Nicht-Null-Wert.
putIfAbsent(K-Taste, V-Wert) Wenn der angegebene Schlüssel noch keinem Wert zugeordnet ist (oder auf null abgebildet ist), wird er mit dem angegebenen Wert verknüpft und null zurückgegeben, andernfalls wird der aktuelle zugeordnete Wert zurückgegeben.

Beispiel:

Java




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

>

>

Ausgabe:

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

Klassen, die die Map-Schnittstelle implementieren, werden in den folgenden Medien dargestellt und später wie folgt beschrieben:

Kartenschnittstelle

1. HashMap

HashMap ist seit Java 1.2 Teil der Java-Sammlung. Es stellt die grundlegende Implementierung der Map-Schnittstelle von Java bereit. Es speichert die Daten in (Schlüssel-, Wert-)Paaren. Um auf einen Wert zuzugreifen, muss man seinen Schlüssel kennen. Diese Klasse verwendet eine Technik namens Java




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

>

>

Ausgabe

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap ist genau wie HashMap mit der zusätzlichen Funktion, die Reihenfolge der eingefügten Elemente beizubehalten. HashMap bot den Vorteil des schnellen Einfügens, Suchens und Löschens, behielt jedoch nie die Einfügespur und -reihenfolge bei, die LinkedHashMap bereitstellt, wo auf die Elemente in ihrer Einfügungsreihenfolge zugegriffen werden kann. Sehen wir uns an, wie man mit dieser Klasse ein Kartenobjekt erstellt.

Beispiel

Java




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

>

>

Ausgabe

vishal 10 sachin 30 vaibhav 20>

3. TreeMap

Der TreeMap in Java wird verwendet, um die Map-Schnittstelle und NavigableMap zusammen mit der Abstract-Klasse zu implementieren. Die Karte wird nach der natürlichen Reihenfolge ihrer Schlüssel oder durch einen Komparator sortiert, der zum Zeitpunkt der Kartenerstellung bereitgestellt wird, je nachdem, welcher Konstruktor verwendet wird. Dies erweist sich als effiziente Methode zum Sortieren und Speichern der Schlüssel-Wert-Paare. Die von der Treemap verwaltete Speicherreihenfolge muss wie bei jeder anderen sortierten Map mit „equals“ konsistent sein, unabhängig von den expliziten Komparatoren. Sehen wir uns an, wie man mit dieser Klasse ein Kartenobjekt erstellt.

Beispiel

Java




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

>

>

Ausgabe

sachin 30 vaibhav 20 vishal 10>

Durchführen von Operationen mit Kartenschnittstelle Und HashMap-Klasse

Da Map eine Schnittstelle ist, kann es nur mit einer Klasse verwendet werden, die diese Schnittstelle implementiert. Sehen wir uns nun an, wie Sie mit den weit verbreiteten Methoden einige häufig verwendete Vorgänge auf einer Karte ausführen HashMap-Klasse . Und auch nach der Einführung von Generika In Java 1.5 ist es möglich, den Objekttyp einzuschränken, der in der Karte gespeichert werden kann.

1. Elemente hinzufügen

Um der Karte ein Element hinzuzufügen, können wir die Methode put() verwenden. Die Einfügungsreihenfolge bleibt jedoch nicht in der Hashmap erhalten. Intern wird für jedes Element ein separater Hash generiert und die Elemente werden basierend auf diesem Hash indiziert, um die Effizienz zu erhöhen.

Beispiel

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

>

>

Ausgabe

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

2. Element ändern

Wenn wir nach dem Hinzufügen der Elemente das Element ändern möchten, können wir dies tun, indem wir das Element erneut mit der Methode put() hinzufügen. Da die Elemente in der Karte mithilfe der Schlüssel indiziert werden, kann der Wert des Schlüssels geändert werden, indem einfach der aktualisierte Wert für den Schlüssel eingegeben wird, den wir ändern möchten.

Beispiel

Java




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

>

>

Ausgabe

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

3. Elemente entfernen

Um ein Element aus der Map zu entfernen, können wir die Methode „remove()“ verwenden. Diese Methode nimmt den Schlüsselwert und entfernt die Zuordnung für einen Schlüssel aus dieser Zuordnung, sofern er in der Zuordnung vorhanden ist.

Beispiel

Java




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

zählen eindeutig
>

>

Ausgabe

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

4. Durch die Karte iterieren

Es gibt mehrere Möglichkeiten, die Karte zu durchlaufen. Die bekannteste Methode besteht darin, eine for-each-Schleife zu verwenden und die Schlüssel abzurufen. Der Wert des Schlüssels wird mithilfe der Methode getValue() ermittelt.

Beispiel

Java




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

>

>

Ausgabe

1 : Geeks 2 : For 3 : Geeks>

5. Zählen Sie das Vorkommen von Zahlen mithilfe von Hashmap

In diesem Code verwenden wir putIfAbsent( ) zusammen mit Sammlungen.frequenz() das genaue Vorkommen von Zahlen zählen. In vielen Programmen müssen Sie das Vorkommen einer bestimmten Zahl oder eines bestimmten Buchstabens zählen. Sie verwenden den folgenden Ansatz, um diese Art von Problemen zu lösen

Java




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

>

>

Ausgabe

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

FAQs in der Java Map Interface

Q1. Was ist eine Kartenschnittstelle in Java?

Antwort:

Die Karte enthält Schlüssel-Wert-Paare, bei denen wir über Schlüsselwerte auf Elemente in der Karte zugreifen.

Q2. Welche Arten von Kartenschnittstellen gibt es in Java?

Antwort:

Es gibt drei Kartenschnittstellenimplementierungen: HashMap, LinkedHashMap und TreeMap.