黑马程序员技术交流社区

标题: 谁帮我看看这个程序 [打印本页]

作者: 刘俊佳    时间: 2012-8-16 09:40
标题: 谁帮我看看这个程序
以下是代码:
  1. public class GenericDemo7 {
  2. public static void main(String[] args)
  3. {

  4. TreeSet<Student3> ts=new TreeSet<Student3>(new Comp());
  5. ts.add(new Student3("abc03"));
  6. ts.add(new Student3("abc02"));
  7. ts.add(new Student3("abc06"));
  8. ts.add(new Student3("abc01"));

  9. Iterator<Student3> it=ts.iterator();
  10. while(it.hasNext())
  11. {
  12. System.out.println(it.next().getName());
  13. }

  14. }
复制代码
  1. class Comp implements Comparator<Student3>
  2. {
  3. public int compare(Student3 s1,Student3 s2)
  4. {
  5. return s1.getName().compareTo(s2.getName());

  6. }
  7. }
复制代码
  1. class Person3
  2. {
  3. private String name;
  4. Person3(String name)
  5. {
  6. this.name=name;
  7. }

  8. public String getName() {
  9. return name;
  10. }
  11. public String toString()
  12. {
  13. return "person:"+name;
  14. }


  15. }
复制代码
  1. class Student3 extends Person3
  2. {

  3. Student3(String name) {
  4. super(name);

  5. }

  6. }
复制代码
这里的Comp类里面怎么可以用compareTo方法?没实现Comparable接口啊。





作者: 官文昌    时间: 2012-8-16 09:50
class Comp implements Comparator<Student3>
{
public int compare(Student3 s1,Student3 s2)
{
    return s1.getName().compareTo(s2.getName());//你的name是字符串类型吧,你查阅api的string,字符串是有compareTo方法的,这里调用的是字符串的compareTo方法

}
}
作者: 方志亮    时间: 2012-8-16 09:55
return s1.getName().compareTo(s2.getName());
s1.getName()得到是一个字符串   而在String类中有compareTo这个方法
compareTo(String anotherString)   按字典顺序比较两个字符串。
compareTo(String anotherString) 返回类型为int类型
作者: 赵方明    时间: 2012-8-16 09:55
s1.getName()返回的是一个字符串,由于String类已经实现了comparable接口,字符串自身就具有了比较性。
它调用的是按自然排序的compareTo()方法.
作者: 左建飞    时间: 2012-8-16 10:05
楼主可以查查API,Comparable是一个接口,在它的已知实现类中是由String的。
s1.getName().compareTo(s2.getName()是两个String进行比较,当然可以用compareTo方法啦。
作者: 杨健yj    时间: 2012-8-16 10:28
s1.getName().compareTo(s2.getName()是调用的String类的compareTo()方法是自然排序的,其实String类已经实现了Comparable接口
作者: 刘俊佳    时间: 2012-8-29 08:41
结合视频和楼上各位的解答问题已经解决,谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2