lazy evaluation
Not doing any work until a result is asked for; stream steps run only when the terminal operation pulls elements.
Intermediate stream operations only record the pipeline; elements are pulled one at a time by the terminal operation, each passing through every stage before the next.