A stream is a sequence of data (is not a data structure) that allows you to apply a sequence of operations in a sequential or concurrent way to filter, convert, sort, reduce, or organize those elements to obtain a final object. For example, if you have a stream with the data of your employees, you can use a stream to:
- Count the total number of employees (this is an expensive terminal operation)
- Calculate the average salary of all employees who live in a particular place
- Obtain a list of the employees who haven't met their objectives
- Any operation that implies work with all or some of the employees
Streams are greatly influenced by functional programming (the Scala programming language provides a very similar mechanism), and work with lambda expressions. Stream API resembles LINQ (short for Language-Integrated Query) queries available in C# language and, to some extent, could be compared with SQL queries.
In the following sections, we will explain the basic characteristics...