The method sort(List<T>) in the type Collections is not applicable for the arguments (List<Number>)
时间: 2024-02-20 13:01:31 浏览: 221
这个错误可能是因为 `List<Number>` 中的元素类型 `Number` 并没有实现 `Comparable` 接口,导致 `Collections.sort()` 方法无法对其进行排序。解决这个问题的方法是在调用 `sort()` 方法时,传入一个 `Comparator` 对象,该对象定义了元素的比较规则。具体实现如下:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortArrayList {
public static void sort(List<Number> list) {
Collections.sort(list, new Comparator<Number>() {
@Override
public int compare(Number o1, Number o2) {
return Double.compare(o1.doubleValue(), o2.doubleValue());
}
});
}
}
```
在上面的代码中,我们先将传入的 `List<Number>` 直接传递给 `Collections.sort()` 方法中。然后,我们创建了一个匿名内部类实现了 `Comparator<Number>` 接口,重写了其 `compare()` 方法,定义了 `Number` 元素的比较规则。在这里,我们使用 `o1.doubleValue()` 和 `o2.doubleValue()` 方法获取 `Number` 元素的 double 值,然后使用 `Double.compare()` 方法进行比较。最终返回一个排好序的 `List<Number>`。
阅读全文