Introduction to Streams

As we mentioned earlier, Streams were first introduced from Java 8. Starting from Java 8, Java started to give more focus to functional programming and started to add functional features gradually.

Kotlin, on the other hand, started to add functional features from day one. Kotlin added functional features and interfaces. While working with Java, you can use Streams only if you use Java 8 and later versions, but with Kotlin you can still use Streams, even when working with JDK 6.

So, what are Streams? You can think of Streams as an abstract layer over a sequence of elements to perform aggregate operations. Confused? Let's take a code example and then try to understand:

  fun main(args: Array<String>) { 
      val stream = 1.rangeTo(10).asSequence().asStream() 
      val resultantList = stream.skip(5).collect(Collectors.toList()) 
      println(resultantList) 
  } 

The output is as follows:

In the preceding program, what we did was create an IntRange value, create a Sequence value from it, and then get the stream value from it. We then skipped the first five items and then collected it back to a List instance. We will have a detailed look at all the functions used in the preceding code later in this chapter.

The preceding program utilized the functional interfaces of the Stream API.

Stream API has a rich set of functional interfaces like we saw in the Collections.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.32.222