Stream is a feature in Java 8. Stream supporting Internal iteration which will provides several features such as sequential and parallel execution, filtering based on the given criteria, mapping etc.
Java 8 Stream support sequential as well as parallel processing, parallel processing can be very helpful in achieving high performance for large collections.
All the Java Stream API interfaces and classes are in the java.util.stream package. Since we can use primitive data types such as int, long in the collections using auto-boxing and these operations could take a lot of time, there are specific classes for primitive types – IntStream, LongStream and DoubleStream.
For Example, you might want to create a collection of employees to represent a company's staff information. Then, you might want to process the whole collection to find out how many days that employee works for the company.
First, we may iterate over the collections to process some works such as “finding” (find the employee with the highest salary) or “grouping” (group all employees in the IT department). These operations are similar to SQL-like operations.
- SELECT max(salary) FROM Employee
As you already know, the above query will return the largest value (salary) of the selected column (Employee). We don't need to specify how to implement the maximum operation, just tell what we expect it to be done. Why can’t we do something similar with collections? How many times do you find yourself reimplementing these operations using loops over and over again?
Second, how can we treat a large collection efficiently? Do we make sure that we can process it appropriately? Ideally, to speed up the processing, you want to leverage multicore architectures. However, writing parallel code is harder than you can think of.
To resolve 2 issues mentioned above,
Stream API may help you process input data in a declarative way similar to SQL. Stream API in Java 8 will resolve such above issues and leverage multicore architecture without the need to write any particular piece of code.
java.util.stream introduces several operations(filter
, sorted
, map
, collect
, ...) to process elements in sequence. Streams are wrappers for collections and arrays. They wrap an existing collection to support operations expressed with Lambda Expression, so you decide what you want to do instead of how to do it.
Comments
Post a Comment