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

标签 java java-stream guava

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

相关文章:

java - 使用 JFreeChart 和 slider 更新图表

java - 如何衡量Java中数据库的性能?

java - Murmur3 散列 Python 和 Java 实现之间的不同结果

java - netbeans 中的组合框

java - 使用 Streams 将 BigDecimals 相加

java - 是否可以在 Java 8 中转换流?

java - ParallelStream 上的 CompletableFuture 被批处理并且运行速度比顺序流慢?

Java流: sorting by ZoneDateTime field

java - 我可以装饰 Guava 的 Joiner 类吗

java - 如何获取形式方法参数类型的实参?