当前位置: 首页 > 知识库问答 >
问题:

每次next()被称为[duplicate]时终止流

习和通
2023-03-14

我不确定是否已经问了一个问题。我对Java的Stream API和Google的Guava还是个新手。

我想使用Java的Stream API将一个对象转换或映射到另一个对象,每次一个项目。看来这和收藏不一样。似乎collect在调用时会转换流中的所有项,而不是一次转换一个项。理想情况下,我希望提供一个iterable,该iterable允许在调用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();
}

共有1个答案

戚京
2023-03-14

哦,您想要挂接iterator.next方法。我认为那是不可能的。但是,您可以操作myitem,因为您得到了所需的引用,例如。

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

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

 类似资料:
  • 我有一套和一个方法: 我可以终止lambda内部的forEach吗(使用或不使用异常)?我应该使用匿名类吗? 我可以这样做: 我正在寻找最快的解决方案,所以异常和一个'real'为每个循环是可以接受的,如果他们是足够快的。

  • 当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。

  • 我有一个应用程序,其中DB连接由Spring配置创建(然后传递到hibernate)。以下是spring文件中的默认参数。 然而,在特定的环境中,Oracle DB连接会在一段时间后被网络设置关闭。我们最初认为关闭连接是因为连接处于空闲状态。我们添加了validationQuery,以便定期在服务器上发布查询,这样连接就不会空闲。 即使在上述设置之后,连接仍然会关闭 还观察到,当应用程序空闲2-3

  • 关于stack的第一个问题, 我正在windows 2003 server AMD Opteron 2.30 Ghz上运行cf10 Enterprise,内存为4gb。Im使用cfindex action=更新索引超过1k PDF 我得到了jvm内存错误和页面被杀死时,它作为一个预定的任务在凌晨运行。 这是页面中的代码: cfindex集合="pdfs"操作="更新"类型="路径"扩展名=". p

  • 我正在阅读blockingqueue、executoreserivce和producer-consumer范式。我希望有一个不断变化的生产者和不断变化的消费者。每个生产者将追加到队列中,消费者将消费消息并处理它们。我有的问题是--生产者怎么知道消费者做了,没有更多的消息会进入队列?我想在主线程中添加一个计数器。当一个生产者启动时,我将增加计数器,当每个生产者结束时,他们将减少int。我的消费者将能

  • 我想使用一个每次使用时都是随机的全局变量。我目前的方法创建一个随机数一次,该数字保持不变。我不需要数字是唯一的,只是总是随机的。 有没有办法做到这一点,或者我每次都必须使用不同的 var?我想要这样做的主要原因是保持代码干净易读,而不必在任何地方一遍又一遍地放置 Math.floor(Math.random() * 100)。我正在尝试生成艺术,所以它会被大量使用。我希望它是全球性的,这样我就可以