当前位置: 首页 > 知识库问答 >
问题:

Java 8 Stream的最大值(Math::max)[重复]

洪浩波
2023-03-14

代码如下:

public class HelloWorld {
    public static void main(String []args) {

    List<Integer> integers = Arrays.asList(-2, -5, -7, -16);
    Integer integer = integers.stream().max(Math::max).orElse(0);
    System.out.println(integer);

    }
} 

返回值是列表中的最小值-15。但是当我将max()更改为min()时,它会返回max值。为什么?

共有1个答案

闻深
2023-03-14

这是非常微妙的,让我们一次取两个:

 -2, -5 => Max between these two is "-2"

这是一个否定的结果,因为流中的max方法接受比较器,该比较器表示:

如果第一个参数小于第二个参数,则返回一个负整数。

Stream.of(-2, -5)
            .max(Math::max)
            .ifPresent(System.out::println); // will show -5
 ...max(Comparator.naturalOrder())
   ....

 类似资料:
  • 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

  • 我正在用Enthuware的模拟测试学习1z0-809 : Java SE 8程序员II。 遇到这个问题。 上面哪个语句会打印9? 答案是 1和3 但是还有别的东西。我不明白为什么 我试图使用调试它,但这并不能帮助我理解。 我尝试使用< code>Integer::max和< code>Integer::compare对< code>ls进行排序 当然,我知道< code>Integer::max

  • 本文向大家介绍Python中用max()方法求最大值的介绍,包括了Python中用max()方法求最大值的介绍的使用技巧和注意事项,需要的朋友参考一下  max() 方法返回其参数最大值:最接近正无穷大的值。 语法 以下是max()方法的语法: 参数     x -- 这是一个数值表达式。     y -- 这也是一个数值表达式。     z -- 这是一个数值表达式。 返回值 此方法返回其参数的

  • 我有点惊讶地看到为什么在我的机器上,数组的最大大小是整数.MAX_VALUE/7 我知道数组是由整数索引的,所以数组大小不能大于整数.MAX_VALUE。我还阅读了一些堆栈溢出讨论,我发现它在JVM上有所不同,并且JVM使用了一些(5-8咬)。 在这种情况下,最大值也应为。 和 之间的任何值都会给我错误: 这是我可以分配给机器上数组的最大值。具体原因是什么? 更新:我正在运行eclipse中的代码

  • 问题内容: 这个问题已经在这里有了答案 : 使用Java在原始数组中查找最大值/最小值 (15个答案) 5年前关闭。 这是我的代码。我需要获取数组的最小值,最大值才能为我获取范围,无论何时输入数字,最小值均为0。请帮助我。谢谢:) 问题答案: 同样,通过更改较小的符号可以找到最小值。