Working with Streams
So, we learned a lot of theories regarding Streams, and we also learned that Streams have a set of functional interfaces to work with (actually, the functional interfaces is the only way to work with Streams), but as I mentioned before, they work in a slightly different way than the Collections API.
To make things clearer, have a look back at the following example:
fun main(args: Array<String>) { val stream = 1.rangeTo(10).asSequence().asStream() val resultantList = stream.filter{ it%2==0 }.collect(Collectors.toList()) println(resultantList) }
The preceding program is a simple one; we just grabbed a stream of numbers 1
through 10
and filtered out the odd numbers from that stream, and then collected the results inside a new List
.
But let's try to understand the mechanism of how it works. We are already familiar with functional interfaces and with the filter
function, as we got introduced to them in the previous chapters...