„StreamAPI_PrimitiveMapping„

drei Methoden aus der Java Stream-API, die verwendet werden, um Elemente eines Streams in primitive Datentypen zu konvertieren: int, long und double. Diese Methoden sind:

1. mapToInt(ToIntFunction<? super T> mapper)
2. mapToLong(ToLongFunction<? super T> mapper)
3. mapToDouble(ToDoubleFunction<? super T> mapper)

Was bedeuten diese Methoden?

Diese Methoden sind spezielle Varianten der map() Methode, die verwendet werden, um die Elemente eines Streams in primitive Datentypen (int, long, double) zu transformieren. Im Gegensatz zur normalen map() Methode, die einen neuen Stream eines Objekttyps zurückgibt, erzeugen diese Methoden spezielle Streams für primitive Typen:

- IntStream: Wird durch mapToInt() erzeugt und enthält int-Werte.
- LongStream: Wird durch mapToLong() erzeugt und enthält long-Werte.
- DoubleStream: Wird durch mapToDouble() erzeugt und enthält double-Werte.

Beschreibung der Parameter:

- ToIntFunction<? super T> mapper: Eine Funktion, die ein Element vom Typ T in einen int-Wert umwandelt.
- ToLongFunction<? super T> mapper: Eine Funktion, die ein Element vom Typ T in einen long-Wert umwandelt.
- ToDoubleFunction<? super T> mapper: Eine Funktion, die ein Element vom Typ T in einen double-Wert umwandelt.

Beispielverwendung:

Angenommen, du hast eine Liste von Objekten und möchtest die Werte in einen primitivwertigen Stream umwandeln:

List<String> strings = Arrays.asList("1", "2", "3");

Konvertiert die Strings in Integer-Werte und summiert sie:

int sum = strings.stream()
                 .mapToInt(Integer::parseInt)  // mapToInt wird verwendet, um einen IntStream zu erzeugen
                 .sum();  // Summiert die int-Werte

System.out.println("Summe: " + sum);  // Ausgabe: Summe: 6

In diesem Beispiel verwendet mapToInt() die Funktion Integer::parseInt, um jeden String in einen int zu konvertieren. Der resultierende IntStream kann dann spezielle Methoden wie sum() verwenden, die für Streams von primitiven Typen zur Verfügung stehen.

Warum verwendet man mapToInt, mapToLong, und mapToDouble?

Diese Methoden bieten eine effiziente Möglichkeit, mit primitiven Werten zu arbeiten. Sie vermeiden die Autoboxing-Kosten, die entstehen würden, wenn man normale map() Operationen verwendet und dann die Ergebnisse in primitive Typen umwandeln müsste.

- Effizienz: Direkter Umgang mit primitiven Datentypen.
- Zusätzliche Methoden: IntStream, LongStream, und DoubleStream bieten zusätzliche Methoden, die speziell für diese Typen optimiert sind, wie z.B. sum(), average(), max(), min(), etc.


Zusammengefasst, diese Methoden sind eine erweiterte Form der map() Funktion, die speziell für primitive Datentypen optimiert sind und dir ermöglichen, effizient mit int, long, und double Werten innerhalb eines Streams zu arbeiten.
