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

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

我已经测试了Java 8 lambdas和stream上的max()函数,看起来如果执行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.


呼啦一阵风
浏览 776回答 3
3回答

慕哥6287543

我会按值分组并将值存储到a 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java