„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Listen effizient in Karten mit Java 8 -Streams übersetzen?

Wie kann ich Listen effizient in Karten mit Java 8 -Streams übersetzen?

Gepostet am 2025-02-06
Durchsuche:901

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

übersetzen Listen in Java 8 Streams

In Java 8 sind eine gemeinsame Aufgabe darin, eine Liste von Objekten mit Streams und Lambdas in eine Karte umzuwandeln. Dies kann auf verschiedene Weise erreicht werden, abhängig vom gewünschten Verhalten und der Verfügbarkeit von Bibliotheken von Drittanbietern wie Guava. Eine Liste zu einer Karte umfasste manuelle Iteration und eine handgeschriebene Schleife:

private Karte Namemap (Liste Auswahl) { endgültige Karte HashMap = new Hashmap (); für (endgültige Auswahl: Auswahl) { HashMap.put (choice.getName (), Auswahl); } Hashmap zurückgeben; }

Guava-basierte Solutions

private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}
Guava mit Java 7

private Karte Namemap (Liste Auswahl) { return Maps.uniqueIndex (Auswahl, neue Funktion () { @Override öffentliche Zeichenfolge anwenden (endgültige Auswahleingabe) { return input.getName (); } }); }

Guava mit Java 8 lambdas

nutzen Java 8 Lambdas vereinfacht den Code noch weiter:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}

Sammler der rettungsweise

java 8's Collectors Class bietet eine robuste Implementierung für die Zuordnung von Listen auf Karten. Der Tomap -Kollektor nimmt zwei Argumente ein:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
eine Schlüsselextraktionsfunktion (eine Funktion, die den Schlüssel für jedes Element abruft)

eine Wertextraktionsfunktion (eine Funktion, die den Wert für jedes Wert abruft Element)

In diesem Fall können wir Choice :: GetName and Function.identity () verwenden, um den Schlüssel und den Wert abzurufen:

    Karte Ergebnis> Ergebnis> Ergebnis> Ergebnis> Ergebnis> Ergebnis> Ergebnis> Ergebnis> Ergebnis = Auswahl.Stream (). Sammeln (sammel.tomap (Auswahl :: GetName, Funktion.Identity ()));
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3