我正在尝试对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));
它运作正常。
这背后的原因是什么?
答案 0 :(得分:4)
这背后的原因是什么?
List
不是数组(即使它是ArrayList
:仅描述数据在内部的存储方式),因此不适用于接受数组参数的方法。