Heim > Java > javaLernprogramm > Wie kann ich Listen mit Java 8 Streams effizient in Karten übersetzen?

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

DDD
Freigeben: 2024-12-28 13:16:10
Original
531 Leute haben es durchsucht

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

Effiziente Übersetzung von Listen in Karten mit Java 8-Streams

In Java 8 besteht eine häufige Aufgabe darin, eine Liste von Objekten mithilfe von Streams und Lambdas in eine Karte zu konvertieren. Dies kann auf verschiedene Weise erreicht werden, abhängig vom gewünschten Verhalten und der Verfügbarkeit von Bibliotheken von Drittanbietern wie Guava.

Ansatz für Java 7 und darunter

Traditionell Mapping Eine Liste zu einer Karte erforderte manuelle Iteration und eine handgeschriebene Schleife:

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

    return hashMap;
}
Nach dem Login kopieren

Guava-Based Lösungen

Guava bietet eine praktische Methode, Maps.uniqueIndex, zum Generieren von Karten aus Listen basierend auf einem angegebenen Schlüsselextraktor.

Guava mit Java 7

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, new Function<Choice, String>() {

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

    });
}
Nach dem Login kopieren

Guave mit Java 8 Lambdas

Die Nutzung von Java 8-Lambdas vereinfacht den Code noch weiter:

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
Nach dem Login kopieren

Collectors to the Rescue

Angebote der Collectors-Klasse von Java 8 eine robuste Implementierung für die Zuordnung von Listen zu Karten. Der toMap-Kollektor benötigt zwei Argumente:

  • Eine Schlüsselextraktionsfunktion (eine Funktion, die den Schlüssel für jedes Element abruft)
  • Eine Wertextraktionsfunktion (eine Funktion, die den Wert für jedes Element abruft). element)

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

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Listen mit Java 8 Streams effizient in Karten übersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage