为什么 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
:它仅描述了数据在内部的存储方式),因此不适用于接受数组参数的方法。
我正在尝试对 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
:它仅描述了数据在内部的存储方式),因此不适用于接受数组参数的方法。