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.