Exploring stream laziness
The principle of lazy evaluation is that you get what you need, only when you need it. For example, if shopping websites such as Amazon were to display 10,000 records to a user, the principle of lazy evaluation would be to retrieve the first 50 and while the user is viewing these, retrieve the next 50 in the background. An eager evaluation would be to retrieve all 10,000 records in one go. With regards to streams, this means that nothing happens until the terminal operation gets called.
The pipeline specifies what operations we want performed on the source and in what order. As nothing happens until the terminal operation runs, Java is aware of the full pipeline. This enables Java to introduce efficiencies whenever possible. For example, why run an operation on a piece of data if that operation is not required? This could arise in the following situations:
- We have already found the data item we are looking for
- We may have a limit set of the...