Streams:
*Get a Slice of a Stream
Example: Get a Stream of 30 elements, containing 21st to 50th (inclusive) element of a collection.
final long n = 20L; // the number of elements to skip
final long maxSize = 30L; // the number of elements the stream should be limited to
final Stream<T> slice = collection.stream().skip(n).limit(maxSize);
Notes:
IllegalArgumentException is thrown if n is negative or maxSize is negative
skip(long) and limit(long) are intermediate operations
n elements then skip(n) returns an empty stream
skip(long) and limit(long) are cheap operations on sequential stream pipelines, but can be quite expensive on ordered parallel pipelines