What streams are
Differences between collections and streams
How to create streams from different types of data sources
How to represent an optional value using the Optional class
Applying different types of operations on streams
Collecting data from streams using collectors
Grouping and partitioning a stream’s data
Finding and matching data in streams
How to work with parallel streams
All example programs in this chapter are members of a jdojo.streams module, as declared in Listing 13-1.