黑马程序员技术交流社区

标题: 集合问题 [打印本页]

作者: 盛亚昆    时间: 2012-3-21 11:35
标题: 集合问题
import java.util.*;
class Student implements Comparable<Student>
{
        private String name;
        private int age;
        private double fen;
        Student (String name,int age,double fen)
                {
                this.name=name;this.age=age;this.fen=fen;
               
               
                }
                public void setName(String name)
                {
                        this.name=name;
                }
                public void setAge(int age)
                {
                        this.age=age;
                }
            public void setFen(double fen)
                {
                        this.fen=fen;
                }
                public String getName()
                {
                        return name;
                }
                public  int getAge()
                {
                        return age;
                }
                public double getFen()
                {
                return fen;
                }
                public int compareTO(Student s)
                {
                        int num=new Integer(this.getAge()).compareTo(new Integer(s.getAge()));

                        if (num==0)
                        return this.getName().compareTo(s.getName());

                                return num;
                }
                public int hashCode()
                {
                        return name.hashCode()+age*37;
                }
                public boolean equals(Object obj)
                {
                        if (!(obj instanceof Student))
                             throw new ClassCastException("类型不匹配");
                                Student s=(Student)obj;
                        return this.name.equals( s.name)&&this.age==s.age;
                       
                }
       
       
}

class Student1
{
        public static void main(String[] args)
        {
                TreeSet<Student> ts=new TreeSet<Student>();//是不是这里出现问题了啊 ??

                ts.add(new Student("wangwu",20,78));
                ts.add(new Student("zhangsan",20,98));
                ts.add(new Student("lisi",20,80));
                ts.add(new Student("zhaoliu",20,60));
                ts.add(new Student("zhuqi",20,60 ));

                Iterator<Student> it=ts.iterator();

                while (it.hasNext())
                {
                        Student s=it.next();
                        System.out.println(s.getName()+" ... "+s.getAge()+"..."+s.getFen());
                }

        }
}
错误  疑惑求指点
Noname2.java:2: Student 不是抽象的,并且未覆盖 java.lang.Comparable 中的抽象方法
compareTo(Student)
class Student implements Comparable<Student>
^
1 错误


作者: 乔玉吉    时间: 2012-3-21 11:52
把你的compareTO改成 compareTo就可以了
作者: ♂诸侯♂    时间: 2012-3-21 11:54
我试了一大会没有试出来。同意楼上的。哈哈。吸取教训了。呵呵。
作者: 盛亚昆    时间: 2012-3-21 12:12
哈哈我找了半天 谢谢啊
作者: 盛亚昆    时间: 2012-3-21 12:29
那怎么会少了zhuqi那 什么原因啊
zhaoliu ... 20...60.0
wangwu ... 20...78.0
lisi ... 20...80.0
zhangsan ... 20...98.0

作者: 泮和顺    时间: 2012-3-21 14:04
我怎么只打出一个student啊
作者: 张锦萍    时间: 2012-3-21 15:47
该为覆盖compareTo方法,运行了一下没问题,又改了一下年龄,再运行也没问题。
import java.util.*;
class Student implements Comparable<Student>
{
         private String name;
         private int age;
         private double fen;
         Student (String name,int age,double fen)
               {
                 this.name=name;this.age=age;this.fen=fen;
                }
                 public void setName(String name)
                 {
                         this.name=name;
                 }
                 public void setAge(int age)
                 {
                         this.age=age;
                 }
                 public void setFen(double fen)
                 {
                         this.fen=fen;
                 }
                 public String getName()
                 {
                         return name;
                 }
                 public  int getAge()
                 {
                         return age;
                 }
                 public double getFen()
                 {
                 return fen;
                 }
                 public int compareTo(Student s)//这个地方改成覆盖compareTo方法
                 {
                        int num=new Integer(this.getAge()).compareTo(new Integer(s.getAge()));

                        if (num==0)
                                 return this.getName().compareTo(s.getName());

                        return num;
                 }
                 public int hashCode()
                 {
                         return name.hashCode()+age*37;
                 }
                 public boolean equals(Object obj)
                 {
                         if (!(obj instanceof Student))
                              throw new ClassCastException("类型不匹配");
                                 Student s=(Student)obj;
                         return this.name.equals( s.name)&&this.age==s.age;
                        
                }
}

class Student1
{
          public static void main(String[] args)
          {
                 TreeSet<Student> ts=new TreeSet<Student>();
                  ts.add(new Student("wangwu",20,78));
                  ts.add(new Student("zhangsan",28,98));
                  ts.add(new Student("lisi",20,80));
                  ts.add(new Student("zhaoliu",20,60));
                  ts.add(new Student("zhuqi",19,60 ));
  
                 Iterator<Student> it=ts.iterator();
  
                 while (it.hasNext())
                  {
                          Student s=it.next();
                          System.out.println(s.getName()+" ... "+s.getAge()+"..."+s.getFen());
                  }
  
         }
  }


作者: 盛亚昆    时间: 2012-3-21 15:59
谢谢指点




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