我必须按字母顺序对列表进行排序。 我试过这样做:
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>
有什么建议吗? 感谢
答案 0 :(得分:0)
列表中的项目需要实现Comparable。 https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
所以这就知道如何排序。否则就无法做到。
答案 1 :(得分:0)
列表中的项目需要实现Comparable,而不是列表本身作为其他答案状态。您可以从Collections.sort()的某些复杂签名中看到这一点,这是Java泛型gobbledegook 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);
}
});