java - SortedSet.stream() 上的 findFirst()

标签 java java-8 java-stream

SortedSet 的 java 8 API 文档仅声明 stream() 继承自 java.util.Collection(参见 https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html ).这意味着流是顺序的,但可能没有顺序。

那么确保 sortedSet.stream().filter(...).findFirst() 与经典 for( ... ) 循环返回第一个匹配元素?还是已经是这种情况,只是不能保证是 API?

(findFirst() api doc: 如果流没有遇到顺序,则可以返回任何元素。)

Stream.sorted() 应该可以解决问题,但这会增加对已在原始集合中排序的元素进行排序的开销。

最佳答案

SortedSet 有定义的遇到顺序,findFirst() 保证返回遇到顺序中的第一个元素(如果流有一个元素)。所以规范已经告诉你你想要什么——你不需要做任何特别的事情。

顺便说一句,sortedSet.stream().sorted() 将得到优化(因为 SpliteratorsortedSet.stream() 返回)将具有 SORTED 特性),所以这样做实际上不会产生排序成本——但您仍然不需要这样做。

关于java - SortedSet.stream() 上的 findFirst(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668989/

相关文章:

java - 如何保留一个并删除其他重复的 arrayList 对象并更新另一个对象属性?

java - 如何在构造函数中设置到期日期?

java - lwjgl:必须在每个游戏循环中重新创建 `True Type Font`,否则 Slick-Util 将不会渲染文本

java - Jackson 序列化 - 带有 JsonRawValue 的 Java 可选字符串

java - 如何在同一 Java 流中正确提交和获取多个 Futures?

java - Apache 节俭 : Can we instruct thrift to translate a SET container to Java LinkedHashSet?

Java 流映射和收集 - 结果容器的顺序

java - Java流图中可重用的单实例包装器/对象

java - bean1有一个列表<bean2>。根据bean2的属性字段值过滤出列表

java - Stream.parallel() 是否使用新线程?