CodeGym /Java-Blog /Random-DE /So iterieren Sie eine Karte in Java
Autor
Milan Vucic
Programming Tutor at Codementor.io

So iterieren Sie eine Karte in Java

Veröffentlicht in der Gruppe Random-DE
In diesem Beitrag lernen wir verschiedene Möglichkeiten kennen, eine Map in Java zu iterieren. Einige seiner gebräuchlichen Methoden und deren Verwendung anhand von Beispielen. Bevor wir beginnen, gehen wir davon aus, dass Sie Schnittstellen und Karten in Java verstehen. Hier ist jedoch eine kurze Zusammenfassung für Sie.

Was ist eine Karte in Java?

Es gibt viele Interpretationen dazu, aber sagen wir es einfach so.
„Map ist eine Schnittstelle in Java, die zum Speichern von Daten in Form von Schlüssel-Wert-Paaren verwendet wird.“
Wenn Sie darüber nachdenken, wofür werden Karten verwendet? Oder wann werden sie benötigt? Dann gibt es im wirklichen Leben viele Situationen, in denen wir Daten in Schlüssel-Wert-Paaren speichern müssen. Beispielsweise können alle Wörter, die einem einzelnen Buchstaben in einem Wörterbuch entsprechen, in Form einer Karte in Java gespeichert werden.
K Drachen, König, Korea, Ritter,... usw.
L Lava, Leben, Licht, Liebe, Libanon,... usw.
Darüber hinaus können Sie sich die folgenden Beispiele ansehen, um dies besser zu verstehen.
Taste Wert
Familienausweis Familienmitglieder
Klassenname Studentenausweise
Bereichsname Postleitzahlen
Bereichsblock Hausnummern

Warum müssen wir eine Karte durchlaufen?

Wir müssen eine Karte durchlaufen oder iterieren, um auf Daten zuzugreifen, sie zu ändern oder zu entfernen. Lassen Sie uns einige der Optionen erkunden, die wir haben.

Was sind einige gängige Methoden zum Iterieren einer Karte in Java?

Allerdings gibt es viele Möglichkeiten, eine Karte zu durchqueren. Wir konzentrieren uns jedoch auf die effizientesten und einfachsten Möglichkeiten.
  1. Die ForEach-Schleifenmethode
  2. Die Iterators-Methode
Nachfolgend finden Sie die Implementierung beider Methoden.

Verwendung der Foreach-Loop-Methode

Beispiel


import java.util.Map;
import java.util.HashMap;

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet()) 
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); 
		}
	}
}

Ausgang

Schlüssel = 1, Wert = Montag Schlüssel = 2, Wert = Dienstag Schlüssel = 3, Wert = Mittwoch Schlüssel = 4, Wert = Donnerstag Schlüssel = 5, Wert = Freitag

Erläuterung

In diesem Beispiel haben wir die foreach-Schleife verwendet, um die Karte zu durchlaufen. Durch die Verwendung der for-each-Schleife erhalten wir ein EntrySet() , das eine automatisierte „Ansicht“ der Daten in der Karte in Form von Schlüssel-Wert-Paaren bereitstellt. Jedes EntrySet enthält einen Schlüssel und entsprechende Werte. Hier können Sie alle Methoden von Map.Entry<key, value> gemäß Ihren Anforderungen verwenden. Hier haben wir nur getKey() und getValue() verwendet , um die Daten auf der Konsole anzuzeigen. Als Übung können Sie die restlichen Methoden erkunden, um Ihre Kenntnisse in diesem Konzept zu stärken.

Verwendung der Iterators-Methode

Beispiel


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext()) 
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next(); 
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

Ausgang

Schlüssel = 11, Wert = November Schlüssel = 1, Wert = Januar Schlüssel = 12, Wert = Dezember Schlüssel = 2, Wert = Februar Schlüssel = 3, Wert = März Schlüssel = 4, Wert = April Schlüssel = 5, Wert = Mai Schlüssel = 6, Wert = Juni Taste = 7, Wert = Juli Taste = 8, Wert = August Taste = 9, Wert = September Taste = 10, Wert = Oktober

Erläuterung

In diesem Beispiel erstellen wir einen expliziten Iterator zum Durchlaufen/Iterieren der Karte. Zuerst müssen Sie die Iteratorklasse importieren und dann den Iterator für das EntrySet abrufen. Durchqueren Sie nun die Karte und prüfen Sie dabei weiterhin das nächste auf der Karte vorhandene Objekt. Los geht's! Ihre Durchquerung ist im Handumdrehen abgeschlossen.

Ist die Foreach-Schleife besser als die Iterators-Methode?

Es spielt keine Rolle, welche Methode Sie zum Durchqueren einer Karte verwenden, solange sie die Arbeit für Sie erledigt. In Bezug auf die Leistung weisen sowohl die for-each-Schleife als auch die Iteratoren die gleiche zeitliche Komplexität auf . Keines ist also besser als das andere, es hängt davon ab, was Sie wann verwenden müssen.

Was ist der Unterschied zwischen den beiden Methoden?

Die for-each-Schleife ermöglicht keine Aktualisierung/Änderung der Daten in der Karte. Im Gegenteil, Sie können Daten mithilfe von Iteratoren problemlos ändern. Die Iterators-Klasse unterstützt Sie dabei, indem sie eine Implementierung zum Bearbeiten/Entfernen der Daten in der Karte bereitstellt. Wenn Sie hingegen versuchen, Kartendaten mithilfe der for-each-Schleife zu bearbeiten/löschen, wird eine ConcurrentModificationException ausgelöst . Der Grund dafür ist, dass die for-each-Schleife implizit einen Iterator erstellt, der dem Benutzer nicht zugänglich ist. Daher haben Sie keinen Zugriff, um Daten zu ändern oder zu löschen.

Welche Traversierungsmethode soll wann verwendet werden?

Wenn Sie sich nicht sicher sind, ob Sie die for-each oder die Iteratoren zum Iterieren Ihrer Karte verwenden sollen, können Sie die folgenden Vorschläge befolgen.
  • Verwenden Sie den Iterator , wenn Sie die Karte ändern müssen.
  • Verwenden Sie die for-each- Schleife, wenn Sie verschachtelte Schleifen haben (um Komplexität zu vermeiden).

Abschluss

Wir hoffen, dass Sie am Ende des Beitrags gelernt haben, wie man eine Karte in Java iteriert. Sie werden ermutigt, diese zu üben und auch andere Durchquerungsmethoden auszuprobieren. Sie können jederzeit zurückspringen oder Fragen stellen, wenn Sie nicht weiterkommen. Bis dahin viel Spaß beim Lernen!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION