如何强制max()返回Java Stream中的所有最大值?我已经测试了Java 8 lambdas和stream上的max()函数,看起来如果执行max(),即使多个对象比较为0,它也会返回绑定候选者中的任意元素进一步考虑。对于这样的最大预期行为是否有明显的技巧或功能,以便返回所有最大值?我没有在API中看到任何内容,但我确信它必须存在比手动比较更好的东西。例如://myComparator is an IntegerComparatorStream.of(1,3,5,3,2,3,5).max(myComparator).forEach(System.out::println);//Would print 5,5 in any order.
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
我会按值分组并将值存储到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
添加回答
举报
0/150
提交
取消