The distinct method returns a stream that yields elements from the original stream, in the same order, except that duplicates are suppressed. The duplicates need not be adjacent.
= Stream.of(“merrily”, “merrily”, “merrily”, “gently”).distinct();
// Only one “merrily” is retained
For sorting a stream, there are several variations of the sorted method. One works for streams of Comparable elements, and another accepts a Comparator. Here, we sort strings so that the longest ones come first:
As with all stream transformations, the sorted method yields a new stream whose elements are the elements of the original stream in sorted order.
Of course, you can sort a collection without using streams. The sorted method is useful when the sorting process is part of a stream pipeline.
Finally, the peek method yields another stream with the same elements as the original, but a function is invoked every time an element is retrieved. That is handy for debugging:
Object powers = Stream.iterate(1.0, p -> p * 2)
.peek(e -> System.out.println(“Fetching ” + e))
When an element is actually accessed, a message is printed. This way you can verify that the infinite stream returned by iterate is processed lazily.
Source: Horstmann Cay S. (2019), Core Java. Volume II – Advanced Features, Pearson; 11th edition.