Stream<Double>
// Arrays.stream();
Stream<String>
// list.stream();list.add("A sequence of elements supporting sequential and parallel aggregate operations.");
list.add("In addition to Stream, which is a stream of object references, there are primitive specializations for IntStream.");
list.add("To perform a computation, stream operations are composed into a stream pipeline.");
Stream<Integer>
Stream<Integer> strm = Stream.iterate();
Stream<Integer> strm = Stream.generate(() -> r.nextInt(100));
IntStream strm = IntStream.of(1,2,3,4,5);
// lambda expr = short-hand implementation of SAM (functional interface)
// method ref = short-hand of lambda expr
static method reference
// static method of a class --> ClassName.method(arg1, arg2); i.e. static method called on ClassName
non-static method reference
// non-static method of a class --> arg1.method(arg2); i.e. non-static method called on arg1
object method reference
// non-static method to call on obj --> obj.method(arg); i.e. non-static method called on given object
constructor reference
// param-less constructor is called after creating object of given class