为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼啦一阵风 2019-12-02 15:04:29
如何强制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



查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 772 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信