我尝试创建一个集合。只是一个有3个名字的小集合,我想按字母顺序排序。并且总是会遇到这个错误:线程“main”中的异常java.lang.AbstractMethodError:collection.compareTo(Ljava / lang / Object;)I。在行中:Collections.sort(名称);我该怎么做才能克服我的问题?
public class collection implements Comparable<collection> {
private String name;
public collection(String name){
this.name= name;
}
public String getName(){
return name;
}
public int compareΤο(collection c){
return this.getName().compareTo(c.getName());
}
}
public class collectionList {
private ArrayList <collection> names;
public collectionList(){
names = new ArrayList <collection>();
}
public void populate() {
collection c1 = new collection("Monica Rows");
names.add(c1);
collection c2 = new collection("Peter Walker");
names.add(c2);
collection c3 = new collection("Jack Miller");
names.add(c3);
}
public void sortBy(){
Collections.sort(names);
}
public String names(){
String s="";
for(collection c: names){
s+=c.getName()+ "\n";
}
return s;
}
}
public class collectionMain {
public static void main(String[] args){
collectionList c = new collectionList();
c.populate();
System.out.println(c.names());
c.sortBy();
System.out.println(c.names());
}
}
答案 0 :(得分:10)
compareTo方法的名称使用unicode字符。 “T”是unicode 0x03A4,“o”是0x03BF。它们应该是0x0054和0x006F。您可以使用以下链接查看您的角色。
http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%26%23932%3B&mode=char
答案 1 :(得分:1)
忽略样式问题,你是compareTo方法使用无效字符:
比较%CE%A4%CE%BF
将其复制并粘贴到在线网址编码器http://meyerweb.com/eric/tools/dencoder/
中