首页 > 解决方案 > 为什么 Comparator.comparingInt 在 Java 的 Arrays.sort() 中不起作用?

问题描述

我正在尝试对 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));

它工作正常。

这背后有什么原因吗?

标签: javalambdacomparator

解决方案


这背后有什么原因吗?

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


推荐阅读