JDK 是否提供虚拟使用者?
2022-09-01 02:07:18
我需要在一个代码块中使用流中的“n”个项目,然后完成,实质上是:
public static <T> void eat(Stream<T> stream, int n)
// consume n items of the stream (and throw them away)
}
在我的情况下,我无法更改签名以返回并简单地返回;我必须从流中扔掉一些元素(不是简单的逻辑) - 为下游消费者做好准备,而下游消费者不需要知道这是怎么发生的,甚至不需要知道。Stream<T>
return stream.skip(n)
最简单的方法是使用,但我必须调用流终止方法来激活流,因此实质上我有:limit(n)
public static <T> void skip(Stream<T> stream, int n) {
stream.limit(n).forEach(t -> {});
}
注意:此代码是对实际代码的过度简化,仅用于说明目的。实际上,限制不起作用,因为围绕什么/如何使用元素有逻辑。可以把它想象成从流中消耗“header”元素,然后让使用者使用“body”元素。
这个问题是关于“什么都不做”的lambda。t -> {}
在JDK的某个地方是否有“什么都不做”的消费者,比如“什么都不做”的功能?Function.identity()