Java 8找到最大

我使用max()来查找列表中的最大值,但下面的代码返回4尽管最大值为90

 List list = new ArrayList(Arrays.asList(4,12,19,10,90,30,60,17,90)); System.out.println(list.stream().max(Integer::max).get()); 

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

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

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

您需要在intStream上调用map

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

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