Java 8 Streams - Objekte einer Liste mappen in eine neue Klasse

Das Thema dieses Tutorials ist es, wie wir Objekte in einer Liste in eine andere Klassenstruktur konvertieren. Auch hier werden wir Java 8 Streams nutzen.
Java 8

Java 8 Streams – Objekte einer Liste mappen in eine neue Klasse

Einleitung

In meinem Tutorial JAVA 8 STREAMS NACH MAP UMWANDELN haben wir gesehen, wie wir Objekte von einer Liste in eine Map überführen. Das Thema dieses Tutorials ist es, wie wir Objekte in einer Liste in eine andere Klassenstruktur konvertieren. Auch hier werden wir Java 8 Streams nutzen.

Voraussetzung

  • Java Kenntnisse

Objekte konvertieren mit der map() Methode von Java 8 Stream

In guten Softwarearchitekturen verwendet jede Softwareschicht(View, Business, Database, Interface, …) seine eigenen Model Klassen. Hierdurch erreicht man, dass es wenig bis gar keine Abhängigkeiten zwischen den einzelnen Schichten gibt. Bei großen Softwareprojekten können sich dann je nach Schicht einzelne Teams um die jeweiligen Schichten kümmern.

Ein klassisches Beispiel sind die Request und Response Klassen einer Rest Schnittstellen. Dieser sollte man aus den Model Klassen der Businessschicht generieren. Die Request und Response Klassen können somit Informationen, die nicht nach Außen weitergegeben werden sollen verhindern. Diese Objekte müssen bevor sie serialisiert werden konvertiert werden.

Im folgenden haben wir eine Klasse Customer.java, die wir nach CustomerResponse.java konvertieren wollen.

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;
    }
}

Die Klasse CustomerResponse.java sieht wie folgt aus. Wir sehen, dass hier das id Attribut nicht existiert. Dies ist auch der einzige Unterscheid zwischen den Klassen. In realen Projekten werdet ihr auf viel komplexere Klassenstrukturen treffen.

package de.ertantoker.tutorial.response;

public class CustomerResponse {
    private String firstname;
    private String lastname;

    public CustomerResponse() {
        
    }
    
    public CustomerResponse(String firstname, String lastname) {
        this.firstname = firstname;
        this.lastname = lastname;
    }

    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 Java 8 ist es möglich, dass wir auf Streams zurückgreifen können um über eine Liste zu iterieren. In dem folgenden Codeabschnitt werden wir eine Liste von Customer Objekten in eine Liste von CustomerResponse Objekten konvertieren bzw. mappen.

Folgender Code zeigt wie man eine List<Customer> nach List<CustomerResponse> überführt.

package de.ertantoker.tutorial;

import de.ertantoker.tutorial.response.CustomerResponse;
import de.ertantoker.tutorial.model.Customer;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Java8MapToClass {

    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);

        List resultList = customerList
                .stream()
                .map(customer -> new CustomerResponse(customer.getFirstname(), customer.getLastname()))
                .collect(Collectors.toList());
    }
}

Das Ergebnis

Wie man sehen kann ist im Grunde die Programmierung mit Java 8 Stream recht komfortabel. Die Java 8 Streaming API bietet eine Menge an Methoden und Klassen mit der man Collections weiter verarbeiten kann. Es empfiehlt sich die Java 8 Streaming API sich genauer anzuschauen.

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.

Verwandte Beiträge

Leave a comment