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()
将得到优化(因为 Spliterator
从 sortedSet.stream()
返回)将具有 SORTED
特性),所以这样做实际上不会产生排序成本——但您仍然不需要这样做。
关于java - SortedSet.stream() 上的 findFirst(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668989/