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

无法对使用Steam.Spliterator在Iterable上创建(第二次)的流进行迭代

空成天
2023-03-14
StreamSupport.stream(values.spliterator(), false)

然后我再做一次,但第二次完全不迭代。我花了很多时间调试它,最后将迭代程序转换为一个列表。

你们有谁知道原因吗?

编辑:对不起,如果我不清楚,

谢谢,Harendra

共有1个答案

岳英耀
2023-03-14

是一个一次性对象。只能消费一次,不能多次消费。如果您想要多次使用这些内容,您必须像以前一样,将流转换为列表、数组或任何非流形式的内容,然后为您想要做的两件事创建两个新的流。

stream类的JavaDoc引用:

一个流只应被操作一次(调用中间或终端流操作)。例如,这排除了“分叉”流,即相同的源提供两个或多个管道,或者相同流的多个遍历。

 类似资料:
  • 问题内容: 我们正在尝试迭代,但没有成功。我们将问题简化为以下最小示例: 如果我们尝试迭代: 仅输出第一个条目: 我们所知道的替代方法甚至无法进入循环: 要么 都失败了,都只显示异常。(这可能与在引发“真实”异常时发生的异常有关,使我们无法知道发生了什么)。 我们正在使用最新稳定的jenkins(2.19.1),并将所有插件更新为今天(2016/10/20)。 是否有解决方案来迭代Jenkins管

  • 问题内容: 在Python中,对于二进制文件,我可以这样编写: 对于要逐行读取的文本文件,我可以编写以下代码: 简写为: PEP 234中 记录了该惯用语,但我无法为二进制文件找到类似的惯用语。 我已经试过了: 我尝试放置,但这是语法错误,因为在iter()中的callable之后有括号。 我知道我可以编写一个函数,但是默认习惯用法有没有办法在哪里使用缓冲区大小而不是面向行? 感谢您忍受Pytho

  • 问题内容: 我收到一个迭代器作为参数,并且想对值进行两次迭代。 可能吗 ?怎么样 ?签名是由我使用的框架(即Hadoop)强加的。 -编辑- 最后,该方法的真正签名是一个。我被这个Wiki页面所迷住了(实际上这是我发现的唯一不被弃用(但错误的)单词计数示例)。 问题答案: 如果要再次迭代,我们必须缓存来自迭代器的值。至少我们可以将第一次迭代和缓存结合起来: (只需要添加代码答案,就知道您在自己的注

  • 我已经在互联网上搜索了问题的答案,但似乎无法得到我正在寻找的答案,我有两个类,application类和users类,我提示用户输入一个新用户或返回数组列表中已经设置为保存users对象的用户的结果。在应用程序结束后,我希望数组列表继续容纳对象,以便在应用程序类中每次连续运行main方法时,我都可以引用arrayList进行交叉检查。 下面是我正在学习的两门课。首先是应用程序类,其次是用户。 我对

  • 问题内容: 假设我们尝试将可能引发检查异常的lambda应用于Java 8流: 这不会编译。 一种解决方法是将检查后的异常嵌套在其中,但是这会使以后的异常处理变得复杂,而且很丑陋: 另一种解决方法可能是转换限制功能,以普通的旧的foreach 循环是比较友好的检查的异常。 但是幼稚的方法失败了: 更新资料 为何在的地方贴了一个回答该问题的技巧。作为副答案本身并不能真正回答该问题。我认为这不足以使这

  • 什么是迭代? 例子: for a in b.value(): pass for x, y in de.items(): pass 字符串也可以 for a in 'abcv': pass 如何判断是否可以迭代 请看代码 from collections import Iterable isinstance('abc', Iterable) True 这里就引出了