接口方法的重写的规则问题
import java.util.*;
import java.awt.*;
class Students implements Comparable
{ int english;
String name;
Students(int english,String name)
{ this.english=english;
this.name=name;
}
public int compareTo(Object b)
{ System.out.println("第一次");
Students st=(Students)b;
System.out.println(this.english-st.english);
return (this.english-st.english);
}
}
public class TreeSetExa
{
public static void main(String[] args)
{ TreeSet<Students> mytree=new TreeSet<Students>(new Comparator<Object>()
{ public int compare(Object a,Object b)
{ System.out.println("第二次");
Students stu1=(Students)a;
System.out.println(stu1.english+"english的成绩");
Students stu2=(Students)b;
System.out.println(stu2.english+"english的成绩");
return stu1.compareTo(stu2);
}
});
Students st1,st2,st3,st4;
st1=new Students(90,"甲");
st2=new Students(91,"乙");
st3=new Students(86,"丙");
st4=new Students(76,"丁");
mytree.add(st1);
System.out.println("第三次");
mytree.add(st2);
mytree.add(st3);
mytree.add(st4);
Iterator te=mytree.iterator();
while(te.hasNext())
{ Students stu=(Students)te.next();
System.out.println(""+stu.name+" "+stu.english);
}
}
}
上面的程序是把一个对象的集合按成绩排序,在树集的的实例中传递了一个接口类型的匿名对象,这个匿名对象可以看做是实现了接口的的类,为什么这儿只实现了Comparator一个接口方法,
public int compare(Object a,Object b),而另一个接口方法Booleann equals(Object obj) 没有实现也能运行????
------解决方案--------------------
不好意思,没看到。
既然是匿名类,也就是它是一个类,而所有类都有继承一个超类object,对不?
object是不是已经实现了equals?