Possuem apenas um método abstrato
- Fortemente relacionadas com lambda expressions
- Podem ter outros métodos, porém eles precisam ser
static,defaultouprivate

Principais Functional Interfaces
Predicate<T>: executar testes
Function<T, R>: converter tipos
UnaryOperator<T>: é uma variante deFunctionfocada em converter valores (e.g. capitalizar as palavras em uma String)
Consumer<T>: processar elementos (e.g. fazer ações com base em um determinado elemento; operações que umforEachoupeekexecutariam)
Supplier<T>: gerar elementos
- Existem ainda variantes de primitivos para essas functional interfaces. Essas variantes existem para evitar escrever muito código já existente, quando for necessário acelerar a performance de operações em Streams que lidem com os primitivos
int,doubleelong
- Existem também variantes de dois argumentos (bi-argument)

Comparator
- O método
thenComparingpermite fazer uma sequência de comparações
- O método
reversedpermite inverter a ordem da coleção comparada
Predicate
- Os métodos
andeorcombinam predicados
- O método
negatenega o resultado de umPredicate
- O método
noté a versão estática denegate
- O método
isEqualcompara um dado objeto com o conteúdo da coleção comparada
Function
- O método
andThenexecuta uma função com o resultado da primeira operação como input
- O método
composeexecuta uma função antes da que a invocou e passa seu resultado para ela
- O método
identityretorna uma função que retorna seu input como argumento; equivalente at -> t