加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在消费者函数抛出异常后,Spliterator是否应该可重用?

发布时间:2020-12-15 01:09:12 所属栏目:Java 来源:网络整理
导读:Spliterator在其tryAdvance和forEachRemaining方法中采用任意Consumer函数. 如果消费者抛出异常,分裂者的状态应该是什么?如果传递给forEachRemaining的消费者在10个项目之后抛出一个异常(然后传播出来并被捕获),那么下一个对分裂器中的tryAdvance的调用是否

Spliterator在其tryAdvance和forEachRemaining方法中采用任意Consumer函数.

如果消费者抛出异常,分裂者的状态应该是什么?如果传递给forEachRemaining的消费者在10个项目之后抛出一个异常(然后传播出来并被捕获),那么下一个对分裂器中的tryAdvance的调用是否会返回第11个项目,或者是否应该将分裂器视为死亡&那时无效?

javadocs在这一点上含糊不清;他们只是说任何例外情况都会传播出去,而没有提到分裂者在那之后的状态

最佳答案
我相信在失败之后你不应该走得更远.

分裂器停止其工作,不再迭代元素.即使有剩余的元素.

forEachRemaining中特定元素的异常意味着整个组的计算结束.

Traversal and splitting exhaust elements; each Spliterator is useful for only a single bulk computation.

Spliterators.ArraySpliterator如何处理此问题的示例.

Spliterator
3
a
0

AFAIK,大多数基于集合/数组的Spliterators都以这种方式工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读