Java 8找到最大值

时间:2014-12-19 16:42:44

标签: java java-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 个答案:

答案 0 :(得分:11)

Stream#max(Comparator)需要Comparator。您需要使用Integer#compare(int, int)作为比较函数。

list.stream().max(Integer::compare).get()

您提供Integer#max(int, int)作为Comparator#compare(int, int)的实施。该方法与Comparator#compare的要求不符。它不返回指示哪个值最大的值,而是返回最大值。

答案 1 :(得分:3)

您需要在intStream

上调用地图

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

目前,您的代码只返回列表中的第一个值,即您的案例中的4