O'Reilly has a great in-depth article on the functional interface in Java 8. Here's a quick cheat sheet to keep track of the main types, what they do and common use cases.
Predicate returns true or false. These are used for filters or replacing big chains of if/else logic.
Function transforms data. These are used for maps, and other transformations. It is important to not mutate the original data that is passed in.
Supplier takes no arguments and returns a value of a known type. Fetching, reading or creating resources to be used by other functions are common use cases. Suppliers get things started.
Consumer accepts a single argument, but does not return any results. Consumers are where mutating functions, things with side-effects, should go. Consumers finish things.
If you like this, visit my blog for more.
Thanks to Rog01 for the great robot photo