繁体   English   中英

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

[英]Java - sorting using Collections.sort()

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

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;
}

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

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

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

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;
}

所有JDK Numbers (例如FloatInteger等)都匹配此类型。

对于外行,语法<T extends A & B>是你所结合的方式T AB

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

您收到错误,因为数字未实现Comparable<Number> 您需要添加通用约束,以便它扩展数字和可比较。 在这种情况下:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM