为什么 Comparator.comparingInt 在 Java 中的 Arrays.sort() 中不起作用?

Why Comparator.comparingInt not working in Arrays.sort() in Java?

我正在尝试对 Interval class:

列表进行排序
class Interval {
    int start;
    int end;
    Interval() { start = 0; end = 0; }
    Interval(int s, int e) { start = s; end = e; }
}

我尝试使用下面的代码:

Arrays.sort(intervals, Comparator.comparingInt(interval -> interval.start));

但是有编译错误:

java: no suitable method found for sort(java.util.List<Interval>,java.util.Comparator<java.lang.Object>)
    method java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (argument mismatch; java.util.List<Interval> cannot be converted to T[]))
    method java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))

然而,当我使用:

intervals.sort(Comparator.comparingInt(interval -> interval.start));

它工作正常。

这背后有什么原因吗?

Any reasons behind this?

A List 不是数组(即使它是一个 ArrayList:它仅描述了数据在内部的存储方式),因此不适用于接受数组参数的方法。