[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung

Erste Stufe

In diesem Artikel werde ich Ihnen einige Möglichkeiten zeigen, wie Sie die in Map gespeicherten Schlüssel und Werte unabhängig von der Implementierung in einem iterativen Prozess abrufen können. Die Zielgruppe dieses Artikels sind hauptsächlich Anfänger bis Fortgeschrittene.

Ich denke, dass es viele Situationen gibt, in denen Sie die Datenstruktur einer Liste wie "ArrayList" oder "LinkedList" verwenden, um eine Reihe von Informationen beim Programmieren zu verwalten. Wenn Sie jedoch die Datenstruktur von Map beherrschen, können Sie leicht kompliziertere Probleme lösen. Ich möchte, dass Sie lernen, wie man es benutzt, weil Sie damit umgehen können.

Haupterfassungsmethode

Die folgenden Methoden werden hauptsächlich verwendet, um Schlüssel und Werte aus einer Sammlung von Kartenstrukturen während der iterativen Verarbeitung abzurufen.

--Verwenden Sie "EntrySet" --Verwenden Sie die Methode "forEach (BiConsumer <T, U>)" (JDK 1.8 oder höher).

Verwendung von EntrySet

Es ist Ihnen jetzt vielleicht nicht vertraut, aber Sie können die in der Karte gespeicherten Schlüssel und Werte in einem iterativen Prozess einfach mithilfe von "EntrySet" abrufen.

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public final class TestEntrySet {

    public static void main(String[] args) {
        final Map<String, String> testMap = new HashMap<>(3);
        testEntrySet.put("test1", "value1");
        testEntrySet.put("test2", "value2");
        testEntrySet.put("test3", "value3");

        final Set<Entry<String, String>> testEntrySet = testMap.entrySet();

        for (Map.Entry<String, String> entry : testEntrySet) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

Im obigen Beispielcode wird die in HashMap implementierte Test Map deklariert, die Testwerte werden gesetzt und dann wird die entrySet () -Methode aufgerufen.

Sie können ein "EntrySet" vom Typ "Set <Entry <String, String >>" erhalten, indem Sie die Methode "entrySet ()" aufrufen. Verwenden Sie das hier in der erweiterten for-Anweisung erhaltene "EntrySet". Natürlich erhalten Sie im obigen Beispielcode vor der Iteration das "EntrySet", aber Sie können auch das "EntrySet" erhalten, wenn Sie die Erweiterung für wie unten gezeigt verwenden.

//Holen Sie sich EntrySet, wenn Sie eine erweiterte for-Anweisung definieren
for (Map.Entry<String, String> entry : testMap.entrySet()) {
}

Sie können den in der Map gespeicherten Schlüssel mithilfe der Methode "getKey ()" im iterativen Prozess und den in der Map gespeicherten Wert mithilfe der Methode "getValue ()" abrufen.

Daher wird das Ausführungsergebnis des obigen Beispielcodes wie folgt ausgegeben.

test1
value1
test2
value2
test3
value3

Verwendung der forEach-Methode

Vielleicht ist diese Methode, die die Methode "forEach ()" verwendet, jetzt mehr Mainstream als der iterative Prozess, der das zuvor eingeführte "EntrySet" verwendet. Diese forEach () -Methode ist eine relativ neue Methode, die in JDK1.8 mit der zusätzlichen Funktionsschnittstelle implementiert wurde, und sie ist jetzt intuitiver zu iterieren als EntrySet.

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

public final class TestForEach {

    public static void main(String[] args) {
        final Map<String, String> testMap = new HashMap<>(3);
        testEntrySet.put("test1", "value1");
        testEntrySet.put("test2", "value2");
        testEntrySet.put("test3", "value3");

        //BiConsumer als Argument<T, U>Übergeben Sie einen Lambda-Ausdruck, der implementiert wird
        testMap.forEach((key, value) -> {
            System.out.println(key);
            System.out.println(value);
        });
    }
}

Auf den ersten Blick werden Sie feststellen, dass es prägnanter ist als die EntrySet-Methode.

Der Punkt, der schwierig erscheint, ist das Argument, aber dem Argument der Methode "forEach ()" wird ein Lambda-Ausdruck übergeben, der die Funktionsschnittstelle "BiConsumer <T, U>" implementiert. Ich werde den Lambda-Ausdruck und die Funktionsschnittstelle weglassen, da sie vom Zweck dieses Artikels abweichen. Wenn Sie jedoch die Methode "forEach ()" in Map verwenden, ist es in Ordnung, wenn Sie sich daran erinnern, wie der obige Beispielcode geschrieben wurde.

Der im Lambda-Ausdruck angegebene Variablenname kann beliebig geändert werden. Im Fall des obigen Beispielcodes wird der Kartenschlüssel in "Schlüssel" und der Kartenwert in "Wert" gespeichert.

Daher ist das Ausführungsergebnis des obigen Beispielcodes wie bei Verwendung von "EntrySet".

test1
value1
test2
value2
test3
value3

wichtiger Punkt

Aufgrund der Eigenschaften der Funktionsschnittstelle "BiConsumer <T, U>" ist es nicht möglich, während der iterativen Verarbeitung mit der Methode "forEach ()" einen Rückgabewert zurückzugeben. Einige Funktionsschnittstellen geben einen Wert zurück, aber die Methode "forEach ()" wiederholt einfach den Vorgang für die Größe der Karte.

Wenn Sie beispielsweise "false" als booleschen Wert zurückgeben möchten, wenn bei wiederholter Map-Verarbeitung ein Fehler festgestellt wird, empfehlen wir die Verwendung von "EntrySet" anstelle von "forEach ()".

Recommended Posts

[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung
[Java] Verschiedene Methoden, um den in List gespeicherten Wert durch iterative Verarbeitung zu ermitteln
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
So erhalten Sie das Datum mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
[Java] So erhalten Sie den Maximalwert von HashMap
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
So legen Sie fest, dass Tabulatoren und Leerzeichen sichtbar sind, indem Sie mit der Tabulatortaste Leerzeichen in Java-Dateien in Eclipse einfügen
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So ermitteln Sie die Länge einer Audiodatei mit Java
Doppelte Karte sortiert nach Schlüssel in Java
Schlüssel vom Wert in Java Map umkehren
[Verarbeitung × Java] Verwendung der Schleife
[Java] So erhalten Sie das aktuelle Verzeichnis
[Verarbeitung × Java] Verwendung der Klasse
[Verarbeitung × Java] Verwendung der Funktion
Webanwendungsstruktur nach Java und Verarbeitungsablauf in der Präsentationsschicht
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Verwenden Sie MyBatis, um eine Karte mit einem Schlüssel als Kennung und einem Wert als Entität abzurufen
So erhalten Sie eine Klasse von Element in Java
Wie man Java SE8 Gold bekommt und studiert
[Java] So erhalten Sie die endgültige umgeleitete URL
Ich möchte den Wert in Ruby erhalten
Einbetten und Anzeigen von YouTube-Videos in Rails (Sie können die eingegebene URL auch durch Bearbeiten abrufen).
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
Quelle zum Abrufen der Umleitungsquell-URL in Java
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
In der Abbildung verstandene Java-Klassen und -Instanzen
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
# 1_JAVA Ich möchte die Indexnummer durch Angabe eines Zeichens in der Zeichenfolge erhalten
[Java] Anzeigen der von LocalDate und DateTimeformatter erfassten Tage auf Japanisch
[Java] Verwendung von Map
Verwendung von Java Map
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
So verbinden Sie die Zeichenfolgen in der Liste durch Kommas getrennt
[Rails] So definieren Sie Makros in Rspec und standardisieren die Verarbeitung
So rufen Sie den Hashwert in einem Array in Ruby ab
Was ist in "Java 8 bis Java 11" passiert und wie wird eine Umgebung erstellt?
Aufrufen und Verwenden der API in Java (Spring Boot)
So entwickeln und registrieren Sie eine Sota-App in Java
So leiten Sie den letzten Tag des Monats in Java ab
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
So wechseln Sie Java in der OpenJDK-Ära auf dem Mac
[Schienen] Anzeigen von Informationen, die in der Datenbank gespeichert sind
So schreiben Sie Kommentare in die Schemadefinitionsdatei in GraphQL Java und spiegeln sie in GraphiQL und GraphQL Playground wider
Filtern Sie die optionale Java No. 2-Liste, die im Geschäftsleben nützlich war, und erhalten Sie den ersten Wert