Start here. This is the direct spoken answer to practice first.
Overview
A lambda is not a free-standing function type in Java; its meaning comes from the target functional interface.
A functional interface has one abstract method, so a lambda or method reference can provide that method's behavior. Predicate<T> tests a value, Function<T,R> transforms one, Consumer<T> accepts one for side effects, and Supplier<T> produces one. The target interface gives the lambda its parameter and return types. Default and static methods do not stop an interface from being functional.