Chapter 3. Streams
The language changes introduced in Java 8 are intended to help us write better code. New core libraries are a key part of that, so in this chapter we start to look at them. The most important core library changes are focused around the Collections API and its new addition: streams. Streams allow us to write collections-processing code at a higher level of abstraction.
The Stream
interface contains a series of functions that weâll explore throughout this chapter, each of which corresponds to a common operation that you might perform on a Collection
.
From External Iteration to Internal Iteration
Tip
A lot of the examples in this chapter and the rest of the book refer to domain classes, which were introduced in Example Domain.
A common pattern for Java developers when working with collections is to iterate over a collection, operating on each element in turn. For example, if we wanted to add up the number of musicians who are from Liverpool, we would write the code in Example 3-1.
int
count
=
0
;
for
(
Artist
artist
:
allArtists
)
{
if
(
artist
.
isFrom
(
"Liverpool"
))
{
count
++;
}
}
There are several problems with this approach, though. It involves a lot of boilerplate code that needs to be written every time you want to iterate over the collection. Itâs also hard to write a parallel version of this for
loop. You would need to rewrite every for
loop individually in order to make them operate in parallel.
Finally, ...
Get Java 8 Lambdas now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.