Java - 使用Collections.sort()进行排序

use*_*571 3 java sorting collections double integer

我必须编写一个方法来对整数和双打进行排序.

public ArrayList<Number> sortDescending(ArrayList<Number> al){
    Comparator<Number> c=Collections.reverseOrder();
    Collections.sort(al,c);
    return al;
}

public ArrayList<Number> sortAscending(ArrayList<Number> al){
    Collections.sort(al);
    return al;
}
Run Code Online (Sandbox Code Playgroud)

问题是在sortAscending中,发生以下错误:

绑定不匹配:类型集合的通用方法sort(List)不适用于参数(ArrayList).推断类型Number不是有界参数的有效替代<T extends Comparable <?超级T >>

Boh*_*ian 9

您需要使用以下Number相交的通用上限Comparable<T>:

public <T extends Number & Comparable<T>> ArrayList<T> sortDescending(ArrayList<T> al){
    Comparator<T> c=Collections.reverseOrder();
    Collections.sort(al,c);
    return al;
}

public <T extends Number & Comparable<T>> ArrayList<T> sortAscending(ArrayList<T> al){
    Collections.sort(al);
    return al;
}
Run Code Online (Sandbox Code Playgroud)

所有JDK Numbers(例如Float,Integer等)都匹配此类型.

对于新手来说,语法<T extends A & B>是你绑定的方式T,以双方 AB.

仅供参考,没有"或"逻辑的语法(如果你考虑它也没有意义)

  • 仅供参考:没有理由在您的任何一种方法上都有一个返回类型,因为List已经就地排序了. (2认同)