Stream.max()如何处理相等性?

尽管我怀疑答案是“未指定” …

如果有多个“最大/最低”的元素Stream,其中Comparator传递到最大或最小的方法认为等于(返回0),它是指定的某处哪些元素将被发现的?

回答:

确实很难仅从文档中得出明确的声明。如果我们尝试从“减少”过程的一般描述和文档的类似提示中得出结论,总会觉得我们可能在做过多的解释。

然而,有一个关于这个问题的明确声明来自布赖恩戈茨谁是相当关于流API的权威:

如果流是有序的(例如从数组或List获得的流),则在有多个最大元素的情况下,它返回最大的 第一个 元素;否则,返回第 一个

元素。仅当流无序时才允许选择任意元素。

遗憾的是,这样的显式声明未在的文档中做出Stream.max,但至少符合我们对实现的经验和知识我们中的那些研究源代码的人。别忘了实际的考虑,因为unordered().max(comparator)

如果max允许首先选择一个任意元素,那么很容易说出“先选择而不是先”而不是“先选择而不是先选” 。

以上是 Stream.max()如何处理相等性? 的全部内容, 来源链接: utcz.com/qa/411372.html

回到顶部