Als Lernender bin ich beim Thema Lambda-Schnittstellen im Paket java.util.function angekommen. Ich habe probiert, folgenden Code praktisch nachvollziehen, aber offensichtich ist im Code ein Fehler. Könnte mir bitte jemand helfen?
Java:
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
// Datenselektion mit der »Predicate«-Schnittstelle:
// printNumbers gibt in einer Zeile alle Zahlen aus 'data' aus, für die 'condition' zutrifft.
public class Main {
public static void main(String[] args) {
public static void printNumbers(List<Integer> lst, Predicate<Integer> condition) {
for(Integer item : lst)
if(condition.test(item))
System.out.print(item + " ");
// zum Schluss neue Zeile beginnen
System.out.println();
}
var data = new ArrayList<Integer>();
for(int i=1; i<100; i++) // data = [1, 2, 3, ..., 100]
data.add(i);
// Aufruf von printNumbers() mit diversen Lambda-Ausdrücken
// alle Zahlen kleiner 10 ausgeben
System.out.println("Kleiner 10");
printNumbers(data, n -> n < 10);
// alle gerade Zahlen ausgeben
System.out.println("Gerade");
printNumbers(data, n -> n % 2 == 0);
// alle Quadrate ausgeben
System.out.println("Quadratzahlen");
printNumbers(data, n -> (int)Math.sqrt(n) * (int)Math.sqrt(n) == n);
}
}