Java 8查找最大值

8
我正在使用max()函数查找列表中的最大值,但是下面的代码返回4,尽管最大值是90
List<Integer> list = new ArrayList<>(Arrays.asList(4,12,19,10,90,30,60,17,90));
System.out.println(list.stream().max(Integer::max).get());
2个回答

15

Stream#max(Comparator)接受一个Comparator比较器。你需要使用Integer#compare(int, int)函数作为比较函数。

list.stream().max(Integer::compare).get()
你之前提供了 Integer#max(int, int) 作为 Comparator#compare(int, int) 的实现方式。但是这个方法不符合 Comparator#compare 的要求。它返回的不是指示哪个是最大的值,而是最大值本身的值。

2
或者您可以使用 list.stream().max(Comparator.naturalOrder()).get() - Holger

3

你需要在intStream上调用map方法

System.out.println(list.stream().mapToInt(Integer::intValue).max().getAsInt());

目前你的代码只返回列表中的第一个值,即在你的情况下是4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接