错误在java中排序字母表列表

时间:2014-11-17 16:13:16

标签: java list sorting

我必须按字母顺序对列表进行排序。 我试过这样做:

        java.util.Collections.sort(Schedario.returnNewListCode());

但是我收到以下错误:

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<CodeRegistry>). The inferred type CodeRegistry is not a valid substitute for 
 the bounded parameter <T extends Comparable<? super T>

有什么建议吗? 感谢

2 个答案:

答案 0 :(得分:0)

列表中的项目需要实现Comparable。 https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

所以这就知道如何排序。否则就无法做到。

答案 1 :(得分:0)

列表中的项目需要实现Comparable,而不是列表本身作为其他答案状态。您可以从Collections.sort()的某些复杂签名中看到这一点,这是Java泛型go​​bbledegook for&#34; X的列表,其中X实现了Comparable&#34;

public static <T extends Comparable<? super T>> void sort(List<T> list) {

以下是有效的,因为String实现了java.lang.Comparable

Collections.sort(new ArrayList<String>()) 

以下出现与您描述的相同的错误,因为“马不是可比较的”

private class Horse {
    private String name;
}
Collections.sort(new ArrayList<Horse>()) 

解决方案1:实施Comparable

private class Horse implements Comparable<Horse> {
    private String name;

    @Override
    public int compareTo(Horse o) {
        return o.name.compareTo(name);
    }
}

解决方案2:使用Collections.sort(列表,比较器)。如果您有多个排序顺序要求或该类不在您的控制范围内,则非常有用,

Collections.sort(new ArrayList<Horse>(), new Comparator<Horse>() {
    @Override
    public int compare(Horse o1, Horse o2) {
        return o1.name.compareTo(o2.name);
    }
});