Java 8 流 max() 函数参数类型 比较器 vs 可比较
我写了一些简单的代码,如下所示。此类工作正常,没有任何错误。
public class Test {
public static void main(String[] args) {
List<Integer> intList = IntStream.of(1,2,3,4,5,6,7,8,9,10).boxed().collect(Collectors.toList());
int value = intList.stream().max(Integer::compareTo).get();
//int value = intList.stream().max(<Comparator<? super T> comparator type should pass here>).get();
System.out.println("value :"+value);
}
}
如代码注释所示,该方法应传递类型为 的参数。max()
Comparator<? super Integer>
但实现接口 - 不是 。Integer::compareTo
Comparable
Comparator
public final class Integer extends Number implements Comparable<Integer> {
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);
}
}
这怎么能行呢?该方法说它需要一个参数,但它与参数一起工作。max()
Comparator
Comparable
我知道我误解了什么,但我现在知道了什么。有人可以解释一下吗?