The Stream interface provides chainable operations that can be performed on a series of values. An object that implements the Stream interface is like an Optional that can contain several values instead of just one. Since many of the methods in the Stream interface return streams, very powerful chains of streams can be created. The Collector interface is used to collect Stream Elements into a mutable reduction. The Collectors class contains static methods which create Collector objects that solve various problems.