Infinite Sequential ordered and unordered Stream - in java 8







1)  Program/ Example - Infinite Sequential ordered and unordered Stream - in java 8


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
/**
* Write Program to show - infinite Sequential ordered and unordered Stream - in java 8
*/
public class StreamsExample2_infiniteSequentialStream {
   public static void main(String[] args) {
          List<String> StringList = new ArrayList<>();
         
          //
          StringList.add("a");   
          StringList.add("b");   
          StringList.add("a");   
          // In one line display all distinct records in stream
          System.out.println("Use stream for finding distinct elements and and display");
          Stream<String> stream = StringList.stream(); // Convert list (ArrayList) of String to stream
          stream = StringList.stream();
          stream.distinct()
                 .forEach(System.out::println);  // Displays -
          //
          System.out.println("\n1. infinite sequential unordered stream");
          System.out.println("generate() method returns an infinite sequential unordered stream");
          //generate() - generate() method returns an infinite sequential unordered stream
          //Each element is generated by the Supplier passed as argument.
          //Where to use generate() method to return an infinite sequential unordered stream?
          //When we want to generate constant streams or streams of random elements.
          Stream<String> stream1 = Stream.generate(() -> {
                 return "infiniteUnorderedStream";
          });
          //stream1.forEach(System.out::println); //It will print till infinite, as stream was created using generate() method
         
         
         
          System.out.println("\n2. infinite sequential ordered stream");
          System.out.println("iterate() method returns an infinite sequential ordered stream");
          //iterate() - iterate() method returns an infinite sequential ordered stream
          //How infinite sequential ordered stream is produced?
         
          //Signature of iterate() method >
          //Stream.iterate(String seed, UnaryOperator<String> f)
          //By passing seed to function passed Example -
          //Seed = "xyz"
          //Function (i.e. Unary operator) = (n) -> n.toUpperCase()
         
          //Element at 0th position of seed = 'x'
         
          //So, First seed  i.e. f(seed) will be formed like
          //Pass 'x'   to   (n) -> n.toUpperCase()  ,,It will return 'X'
         
          //And next needs will be formed like >
          // f(f(seed))
         
          Stream<String> stream2 = Stream.iterate("xyz", (n) -> n.toUpperCase() );
          //stream2.forEach(System.out::println);  //It will print 'XYZ' iteratively till infinite, as stream was created using iterate() method
          //As, XYZ' is printed iteratively, so if you stop this infinite program in between you might see output like 'X' or 'XY'
         
   }
}
/*
Use stream for finding distinct elements and and display
a
b
1. infinite sequential unordered stream
generate() method returns an infinite sequential unordered stream
2. infinite sequential ordered stream
iterate() method returns an infinite sequential ordered stream
*/


Having any doubt? or you you liked the tutorial! Please comment in below section.
Please express your love by liking JavaMadeSoEasy.com (JMSE) on facebook, following on google+ or Twitter.







eEdit
Must read for you :