Java 8 Streams – Aus einer Collection, Liste oder Set eine Map erstellen
Einleitung
Mit der Einführung von Streams in Java 8 hat sich das Schreiben von Java Code geändert. Mit Java 8 kann man nun auf komfortable Art und Weise Objekte von einer Liste in eine Map überführen. Wie man dies implementiert werde ich euch in diesem Tutorial zeigen.
Voraussetzung
- Java Kenntnisse
Collection, List oder Set nach Map konvertieren mit der Java 8 Streaming API
Als Entwickler steht man ab und an vor dem Problem, das Objekte einer Collection, List oder Set in eine Map überführt werden müssen. Hierfür gibt es unterschiedliche Gründe. Ein Grund dafür kann es sein, das der Zugriff auf die Elemente einer Map deutlich schneller ist, als die Zugriffe auf die Elemente einer Liste. In diesem Fall ergibt es Sinn die Collection, List oder Set im Vorfeld in eine Map zu überführen.
In diesem Tutorial gehen wir davon aus, dass wir eine Liste der Klasse Customer.java haben und dieser die Properties id, firstname, lastname besitzt.
package de.ertantoker.tutorial.model; public class Customer { private String id; private String firstname; private String lastname; public Customer(String id, String firstname, String lastname) { this.id = id; this.firstname = firstname; this.lastname = lastname; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } }
Mit der Streamin API von Java 8 können wir Streams nutzen und diese am Ende der Bearbeitung über Collectoren in eine für uns passende Zielstruktur überführen. In diesen Beispiel wollen wir von einer Liste in eine Map konverteren.
Folgender Code zeigt wie man eine List<Customer> nach Map<String, Customer> überführt.
package de.ertantoker.tutorial; import de.ertantoker.tutorial.model.Customer; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Java8ListToMap { public static void main(String[] args) { Customer customer1 = new Customer("1", "Albert", "Einstein"); Customer customer2 = new Customer("2", "Otto", "Hahn"); Customer customer3 = new Customer("3", "Isaac", "Newton"); List customerList = Arrays.asList(customer1, customer2, customer3); Map<String, Customer> customerMap = customerList .stream() .collect(Collectors.toMap(Customer::getId, customer -> customer)); } }
Das Ergebnis
Wir haben nun erfahren wie wir mit Java 8 und Streams Collection, Listen oder Set in eine Map konvertieren können. Mit den Collector Klassen ist es auch möglich die Liste in eine Set umzuwandeln oder die Objekte in der Liste in eine andere Klasse zu konvertieren. Die Streams API bietet hier sehr viele Möglichkeiten. Wie man die Objekte einer Liste in eine andere Klasse konvertiert könnt ihr in meinem Tutorial JAVA 8 STREAM OBJEKTE MAPPEN euch anschauen.
Ich hoffe euch hat mein kleines Tutorial gefallen. Solltet ihr Fragen, Kritik oder Anregungen haben, dann würde ich mich freuen, wenn ihr ein Kommentar hinterlassen würdet.
[amazon_link asins=’3864902908,3836258692,386490451X,3864904838′ template=’ProductCarousel‘ store=’fitnes06-21′ marketplace=’DE‘ link_id=’4ac4e3ac-b4f3-11e8-b249-79c0e9edcccf‘]