Predicate und Function sind @FunctionalInterfaces von Java und können somit in Lambda Ausdrücken verwendet werden.
package de.webitect.functionalinterfaces; import org.junit.jupiter.api.Test; import java.util.List; import java.util.stream.Stream; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; class ImportantFunctionalInterfacesTest { @Test void addOneToAllElements_usingFunction(){ final List<Integer> l = Stream.of(1, 2, 3, 4) .map(x -> x+1) .toList(); assertThat(l, is(List.of(2, 3, 4, 5))); } @Test void filterAllStringsNotConainingA_usingPredicate(){ final List<String> l = Stream.of("d", "ad", "bca", "bc", "bd") .filter(s -> s.contains("a")) .toList(); assertThat(l, is(List.of("ad", "bca"))); } }