当前位置: 首页 > 面试题库 >

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

岳凯康
2023-03-14
问题内容

我已经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


 类似资料:
  • 我在Java 8 lambdas和streams上测试了函数,似乎在执行的情况下,即使有多个对象与0相比,它也会返回绑定候选项中的任意元素,而无需进一步考虑。 对于这样的最大期望行为,是否有一个明显的技巧或函数,以便返回所有的最大值?我在API中没有看到任何东西,但我确信它一定存在比手动比较更好的东西。 例如:

  • 问题内容: 阅读numpy中argmin函数的文档时,我有些困惑。看起来应该可以完成这项工作: 读这个 返回沿轴的最小值的索引。 我可能会认为 将返回所有索引的数组: 但是,它只会返回。渔获量在哪里,或者我应该怎么做才能得到结果? 问题答案: 当您考虑多维数组时,该文档更有意义。 在指定轴的情况下,沿给定轴获取一维子数组,并返回每个子数组最小值的第一个索引。它不会返回单个最小值的所有索引。 要获取

  • 问题内容: 表格示例: 所需的输出(不是确切的格式或上市顺序),每台计算机上每个应用程序的最新安装: 我的SQL语句: 这给了我: 并不是 如我所料。 如果我 仅 选择MAX(date),而没有其他选择,则MAX(date)有效。但是,那时我没有任何数据可以使用(仅是最新日期)。 我不是SQL忍者,所以我很快就会因此而挠头。 问题答案: 尝试这样: 内部查询是为您获取每对计算机和应用程序的max(

  • max 获得数据表中,值最大的max($table, $column, $where) table [string] 表名. column [string] 查询的字段列. where (optional) [array] WHERE 条件.max($table, $join, $column, $where) table [string] 表名. join [array] 多表查询. colum

  • max 获得数据表中,值最大的max($table, $column, $where) table [string] 表名. column [string] 查询的字段列. where (optional) [array] WHERE 条件.max($table, $join, $column, $where) table [string] 表名. join [array] 多表查询. colum

  • 问题内容: 我有一个包含以下内容的表: 我想获取每个单个Seller_id的所有最新行。我可以得到这样的最新行: 如何仅获得每个卖方的最新行? 问题答案: 要获取每个Seller_id的最新记录,您可以使用以下查询 使用查询生成器,您可以将其重写为