Zur Veranschaulichung der mit Java 8 eingeführten Lambda-Ausdrücke, möchte ich hier kurz ein paar Code-Beispiele zeigen, die den Einsatz von Lambdas demonstrieren. Die Beispiele basieren auf einer Demo von Paul Sandoz auf der Java 8 Launch Party 2014 in Berlin.
Die Basis für alle Beispiele ist die Methode words()
, welche eine Liste von Vornamen zurückgibt. Die folgenden Programmcodes zählen die Anzahl der Wörter / Vornamen, deren Länge größer als Vier ist.
Grundlage: words()
1 2 3 4 5 6 7 8 9 | public static List<String> words() { List<String> words = new ArrayList<>(); words.add("Ulrike"); words.add("Ron"); words.add("Benny"); words.add("Michael"); words.add("Eva"); return words; } |
1: Ohne Lambdas
1 2 3 4 5 6 | long count = 0; for (String word : words()) { if (word.length() > 4) { count++; } } |
2: Mit Filter
1 2 3 | long count = words().stream() .filter(w -> w.length() > 4) .count(); |
3: Mit Filter und Mapping
1 2 3 4 | long count = words().stream() .filter(w -> w.length() > 4) .mapToLong(e -> 1L) .sum(); |
4: Mit MapReduce
1 2 3 4 | long count = words().stream() .filter(w -> w.length() > 4) .mapToLong(e -> 1L) .reduce(0, (a, b) -> a + b); |
5: Mit vordefinierten MapReduce
1 2 3 4 | long count = words().stream() .filter(w -> w.length() > 4) .mapToLong(e -> 1L) .reduce(0, Long::sum); |