1.5 其他流的转换
stream 的 distinct() 方法返回一个以去重后的从原始流中产生元素的流。流必须显示的记住已经被看到的。
1 | Stream<String> uniqueWords |
为了对流进行排序,已排序方法有多种变体。一种适用于可比较元素流,另一种适用于比较器。在这里,我们对字符串进行排序,以使最长的字符串排在最前面:
1 | Stream<String> longestFirst = |
与所有流转换一样,排序方法将产生一个新流,其元素是按排序顺序的原始流的元素。
当然,你可以通过流来对一个集合进行排序,当排序过程是流管道的一部分时,排序方法很有用。
最终,peek方法产生了另一个与原始元素具有相同元素的流,但是每次检索元素时都会调用一个函数。这对于调试很方便:
1 | Object[] powers = Stream.iterate(1.0, p -> p * 2) |
当实际访问元素时,将打印一条消息。这样,您可以验证iterate返回的流是否被延迟处理。
为了进行调试,你可以通过 peek() 方法在你想要的地方设置断点。
1 | java.util.stream.Stream 8 |
v1.5.2