gpt4 book ai didi

java - 每次调用 next() 时终止流

转载 作者:行者123 更新时间:2023-12-01 08:53:05 25 4
gpt4 key购买 nike

我不确定是否已经有人提出问题。我对 Java 的 Stream API 和 Google 的 Guava 还很陌生。

我想使用 Java 的 Stream API 一次将一个对象转换或映射到另一个项目。看来这和收集是不一样的。看起来收集会在调用时转换流中的所有项目,而不是一次转换一个项目。理想情况下,我想提供一个可迭代对象,允许在调用类似 next() 之类的方法时转换一项。

也许它看起来像这样:

private Iterable<ObjectA> getIterable(Iterable<ObjectB> itemsToConvert) {
return itemsToConvert.map(mappingFunction);
}

public static void main(String[] args) {
Iterable<ObjectA> myIterable = getIterable(itemsFromSomewhere);
// do the conversion here
ObjectA myItem = myIterable.next();
}

有没有办法在 Java 中使用 Stream API 来做到这一点?如果没有,有没有办法使用 Google 的 Guava 来做到这一点?

最佳答案

哦,您想 Hook Iterator.next 方法。我认为这是不可能的。但是,您可以操作 myItem 因为您获得了所需的引用,例如

 ObjectA myItem = myIterable.next();
manipulateObject(myItem); // change stuff do stuff

但是,由于您希望 next() 方法转换迭代器中的下一项,因此您应该实现自己的 Iterator 并重写它,如下所述:https://stackoverflow.com/a/5849625/4467208

关于java - 每次调用 next() 时终止流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com