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

时间:2018-05-15 07:06:24

标签: java lambda comparator

我正在尝试对Interval类列表进行排序:

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));

它运作正常。

这背后的原因是什么?

1 个答案:

答案 0 :(得分:4)

  

这背后的原因是什么?

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