Heute lernst du:
filter, map, reduce, collectAm Ende wirst du funktionale Programmierkonzepte in Java nutzen können, um Daten kompakt und effizient zu verarbeiten.
Streams erlauben es dir, Operationen auf Collections im funktionalen Stil auszuführen.
import java.util.*;
import java.util.stream.*;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> even = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
even.forEach(System.out::println);
Verwende map, um Elemente zu transformieren, und reduce, um Ergebnisse zu kombinieren.
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0) // ungerade Zahlen
.map(n -> n * n) // quadrieren
.reduce(0, Integer::sum); // summieren
System.out.println("Summe der Quadrate ungerader Zahlen: " + sumOfSquares);
Parallele Streams können die Leistung bei großen Datenmengen verbessern, indem sie Elemente gleichzeitig verarbeiten.
int sumParallel = numbers.parallelStream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Parallele Summe: " + sumParallel);
Lambdas bieten eine kurze Möglichkeit, Verhalten an Collection-Methoden zu übergeben.
numbers.forEach(n -> System.out.println(n * 2));
Methodenreferenzen sind eine Kurzform für Lambdas, die eine bestehende Methode aufrufen.
numbers.forEach(System.out::println);
import java.util.*;
import java.util.stream.*;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> even = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
even.forEach(System.out::println);
Verwende Streams, um die Summe der Quadrate aller ungeraden Zahlen in einer Liste zu berechnen.
Schritte:
stream() und filter, um ungerade Zahlen auszuwählenmap, um jede Zahl zu quadrierenreduce, um die Werte zu summierenBeispiel:
import java.util.*;
import java.util.stream.*;
public class SumSquaresOdd {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Summe der Quadrate ungerader Zahlen: " + sumOfSquares);
}
}