Java集合具有可比性

时间:2011-12-06 02:40:21

标签: java

我尝试创建一个集合。只是一个有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());
}

}

2 个答案:

答案 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/