如何强制max返回Java Stream中的所有最大值?

我已经max对Java 8 lambda和流上的功能进行了一些测试,并且似乎在max执行情况下,即使有多个对象与0比较,它也会在绑定的候选对象中返回任意元素,而无需进一步考虑。

对于这样的最大预期行为,是否有明显的技巧或功能,以便返回所有最大值?我在API中看不到任何内容,但是我确信它必须比手动比较更好。

例如:

// myComparator is an IntegerComparator

Stream.of(1, 3, 5, 3, 2, 3, 5)

.max(myComparator)

.forEach(System.out::println);

// Would print 5, 5 in any order.

回答:

我将按值分组并将值存储到TreeMap中,以便对值进行排序,然后通过获取下一个最后一个条目来获得最大值:

Stream.of(1, 3, 5, 3, 2, 3, 5)

.collect(groupingBy(Function.identity(), TreeMap::new, toList()))

.lastEntry()

.getValue()

.forEach(System.out::println);

输出:

5

5

以上是 如何强制max返回Java Stream中的所有最大值? 的全部内容, 来源链接: utcz.com/qa/420688.html

回到顶部