Transformation von Elementen mit der Map()-Methode
Sie sind bereits mit dem Konzept der intermediären Operationen in der Stream-API vertraut. Diese Operationen transformieren die Elemente eines Streams und geben einen neuen Stream zurück, ohne den ursprünglichen Stream zu verändern. Eine solche Methode ist map().
Die Methode map() nimmt eine Function, die auf jedes Element im Stream angewendet wird. Die Ergebnisse werden in einem neuen Stream gesammelt, während der ursprüngliche Stream unverändert bleibt:
Stream<T> map(Function<? super T, ? extends R> mapper);
T– der Typ der Elemente im ursprünglichen Stream;R– der Typ der Elemente im neuen Stream (nach der Transformation).
Im Wesentlichen wird ein Typ T übergeben, der in den Typ R transformiert wird. Aus diesem Grund wird map() verwendet, wenn der Datentyp eines Streams geändert werden soll.
Praktische Anwendung
Angenommen, eine Liste von Preisen soll durch Hinzufügen einer 10%igen Steuer angepasst werden. Dies ist ein häufiges Szenario bei finanziellen Berechnungen, wie zum Beispiel der Anwendung von Umsatzsteuer auf Produktpreise.
Main.java
1234567891011121314151617package com.example; import java.util.List; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Double> prices = Arrays.asList(100.0, 200.0, 50.0); // Apply a 10% tax to each price List<Double> finalPrices = prices.stream() .map(price -> price * 1.1) .toList(); System.out.println(finalPrices); } }
In diesem Beispiel wird jeder Preis in der Liste mithilfe der map()-Methode um 10 % erhöht.
Jeder Wert wird mit 1,1 multipliziert, um die Steuer zu berücksichtigen, und die Ergebnisse werden in einer neuen Liste gesammelt. Diese transformierte Liste kann anschließend für weitere Berechnungen wie das Erstellen von Rechnungen oder Finanzberichten verwendet werden.
Primitive Typen
Im Gegensatz zur regulären map-Methode, die einen Stream von Objekten zurückgibt, liefern mapToInt(), mapToLong() und mapToDouble() Streams von primitiven Datentypen, wodurch der Speicherbedarf reduziert und die Leistung verbessert wird.
Praktisches Beispiel
Das folgende Beispiel wandelt eine Liste von numerischen Zeichenfolgen in primitive Streams um und gibt die Werte aus.
Main.java
1234567891011121314151617181920212223242526272829303132package com.example; import java.util.List; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.DoubleStream; public class Main { public static void main(String[] args) { List<String> numbers = List.of("10", "20", "30", "40"); // Convert to `IntStream` IntStream intStream = numbers.stream() .mapToInt(Integer::parseInt); System.out.print("IntStream: "); intStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `LongStream` LongStream longStream = numbers.stream() .mapToLong(Long::parseLong); System.out.print("LongStream: "); longStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `DoubleStream` DoubleStream doubleStream = numbers.stream() .mapToDouble(Double::parseDouble); System.out.print("DoubleStream: "); doubleStream.forEach(n -> System.out.print(n + " ")); } }
Dieses Beispiel verarbeitet eine Liste von numerischen Zeichenfolgen.
Zunächst wandelt mapToInt() die Werte in einen IntStream um und gibt jede Zahl als Ganzzahl aus.
Anschließend erstellt mapToLong() einen LongStream, wobei die gleichen numerischen Werte im Typ long beibehalten werden.
Abschließend wandelt mapToDouble() die Daten in einen DoubleStream um und konvertiert die Ganzzahlen in Dezimalzahlen.
Die Verwendung von primitiven Streams gewährleistet eine effiziente Verarbeitung von numerischen Daten und vermeidet die unnötige Erstellung von Objekten.
1. Was macht die Methode map() in der Stream-API?
2. Welcher Typ von funktionalem Interface sollte von der Methode map() akzeptiert werden?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.33
Transformation von Elementen mit der Map()-Methode
Swipe um das Menü anzuzeigen
Sie sind bereits mit dem Konzept der intermediären Operationen in der Stream-API vertraut. Diese Operationen transformieren die Elemente eines Streams und geben einen neuen Stream zurück, ohne den ursprünglichen Stream zu verändern. Eine solche Methode ist map().
Die Methode map() nimmt eine Function, die auf jedes Element im Stream angewendet wird. Die Ergebnisse werden in einem neuen Stream gesammelt, während der ursprüngliche Stream unverändert bleibt:
Stream<T> map(Function<? super T, ? extends R> mapper);
T– der Typ der Elemente im ursprünglichen Stream;R– der Typ der Elemente im neuen Stream (nach der Transformation).
Im Wesentlichen wird ein Typ T übergeben, der in den Typ R transformiert wird. Aus diesem Grund wird map() verwendet, wenn der Datentyp eines Streams geändert werden soll.
Praktische Anwendung
Angenommen, eine Liste von Preisen soll durch Hinzufügen einer 10%igen Steuer angepasst werden. Dies ist ein häufiges Szenario bei finanziellen Berechnungen, wie zum Beispiel der Anwendung von Umsatzsteuer auf Produktpreise.
Main.java
1234567891011121314151617package com.example; import java.util.List; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Double> prices = Arrays.asList(100.0, 200.0, 50.0); // Apply a 10% tax to each price List<Double> finalPrices = prices.stream() .map(price -> price * 1.1) .toList(); System.out.println(finalPrices); } }
In diesem Beispiel wird jeder Preis in der Liste mithilfe der map()-Methode um 10 % erhöht.
Jeder Wert wird mit 1,1 multipliziert, um die Steuer zu berücksichtigen, und die Ergebnisse werden in einer neuen Liste gesammelt. Diese transformierte Liste kann anschließend für weitere Berechnungen wie das Erstellen von Rechnungen oder Finanzberichten verwendet werden.
Primitive Typen
Im Gegensatz zur regulären map-Methode, die einen Stream von Objekten zurückgibt, liefern mapToInt(), mapToLong() und mapToDouble() Streams von primitiven Datentypen, wodurch der Speicherbedarf reduziert und die Leistung verbessert wird.
Praktisches Beispiel
Das folgende Beispiel wandelt eine Liste von numerischen Zeichenfolgen in primitive Streams um und gibt die Werte aus.
Main.java
1234567891011121314151617181920212223242526272829303132package com.example; import java.util.List; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.DoubleStream; public class Main { public static void main(String[] args) { List<String> numbers = List.of("10", "20", "30", "40"); // Convert to `IntStream` IntStream intStream = numbers.stream() .mapToInt(Integer::parseInt); System.out.print("IntStream: "); intStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `LongStream` LongStream longStream = numbers.stream() .mapToLong(Long::parseLong); System.out.print("LongStream: "); longStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `DoubleStream` DoubleStream doubleStream = numbers.stream() .mapToDouble(Double::parseDouble); System.out.print("DoubleStream: "); doubleStream.forEach(n -> System.out.print(n + " ")); } }
Dieses Beispiel verarbeitet eine Liste von numerischen Zeichenfolgen.
Zunächst wandelt mapToInt() die Werte in einen IntStream um und gibt jede Zahl als Ganzzahl aus.
Anschließend erstellt mapToLong() einen LongStream, wobei die gleichen numerischen Werte im Typ long beibehalten werden.
Abschließend wandelt mapToDouble() die Daten in einen DoubleStream um und konvertiert die Ganzzahlen in Dezimalzahlen.
Die Verwendung von primitiven Streams gewährleistet eine effiziente Verarbeitung von numerischen Daten und vermeidet die unnötige Erstellung von Objekten.
1. Was macht die Methode map() in der Stream-API?
2. Welcher Typ von funktionalem Interface sollte von der Methode map() akzeptiert werden?
Danke für Ihr Feedback!