An object that implements the Stream interface is like an Optional that can contain several values instead of just one. Stream has many of the same methods defined in the Optional class including of, filter, and map.
Since many of the methods in the Stream interface return streams, very powerful chains of streams can be created.