日期:2014-05-20  浏览次数:20850 次

问个compaerTo方法的问题
import java.util.*;

public class Compare{
public static void main(String[] args){
List l1=new LinkedList();
l1.add(new Name("Karl","M"));
l1.add(new Name("Steven","Lee"));
l1.add(new Name("Join","o"));
l1.add(new Name("Tom","M"));
System.out.println(l1);
Collections.sort(l1);
System.out.println(l1);
}
}

 class Name implements Comparable{
private String firstname,lastname; 
public Name(String firstname,String lastname){
this.firstname=firstname;
this.lastname=lastname;
}
public String getFirstname(){
return firstname;
}
public String getLastname(){
return lastname;
}
public String toString(){
return(firstname+" "+lastname);
}

public boolean equals(Object obj){
if(obj instanceof Name){
Name name=(Name)obj;
return(firstname.equals(name.firstname))&&(lastname.equals(name.lastname));
}
return super.equals(obj);
}

public int hashCode(){
return firstname.hashCode();
}

public int CompareTo(Object o){
Name n=(Name)o;
int lastCmp=lastname.compareTo(n.lastname);
return(lastCmp!=0?lastCmp:firstname.compareTo(n.firstname));
}
}


上面是LZ的小例子代码,但是我编译的时候有一个错误,说:Name is not abstract and does not override abstract method compareTo(java.lang.Object)in java.lang.Comparable
class Name implements Comparable{

------最佳解决方案--------------------
你的CompareTo方法名写错了是compareTo
------其他解决方案--------------------
不是吧,说的不是很清楚了么?
Name is not abstract and does not override abstract method compareTo(java.lang.Object)in java.lang.Comparable
class Name implements Comparable{
就是你没有实现那个方法哈。
你的方法的名字都不对,应该是小写的。
------其他解决方案--------------------
想问下高人,如何修改才能成功?
------其他解决方案--------------------
引用:
不是吧,说的不是很清楚了么?
Name is not abstract and does not override abstract method compareTo(java.lang.Object)in java.lang.Comparable
class Name implements Comparable{
就是你没有实现那个方法哈。
你的方法的名字都不对……

我傻逼了。。。。
------其他解决方案--------------------
引用:
你的CompareTo方法名写错了是compareTo
太2了我 愣是没看到
------其他解决方案--------------------
你的方法名写错了,要实现的方法CompareTo应改成compareTo
------其他解决方案--------------------
只要注意一下 就ok了