我不确定是否已经有人提出问题。我对 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/