黑马程序员技术交流社区

标题: 毕老师IO的作业 [打印本页]

作者: a283398689    时间: 2013-10-1 17:38
标题: 毕老师IO的作业
老师留下的作业是从控制台接受学生参数,格式如下
zhangsan,50,50,50
接受多名学生参数.并且按总分数排序,最高分排在前.写入一个文件夹中~,
详细代码如下,~用到呢omparable接口~ 这个接口我还不是太懂;

public class Student implements Comparable<Student> {
private String name;
   int ma,cn,en;
   int sum;

   public Student(String name, int ma, int cn, int en ) {
  
  this.name = name;
  this.ma = ma;
  this.cn = cn;
  this.en = en;
  this.sum = ma+cn+en;
}


public String getName(){
  return name;
}
   
   
   public int getSum (){
    return sum;
   }
   
   
   public int hashCode(){
    return name.hashCode()+sum*78;
   }
   
   
   public boolean equals (Object obj){
    if(!(obj instanceof Student)){
     throw  new ClassCastException("类型不匹配");
    }
    Student s = (Student)obj;
    return this.name.equals(s.name)&&this.sum==s.sum;
   
   
   }
   
   
@Override
public int compareTo(Student o) {
  
  int num = new Integer(this.sum).compareTo(new Integer(o.sum));
  if(num==0)
   return this.name.compareTo(o.name);
  return num;
  
}


public String toString (){
  return "student["+ name+","+ma+","+cn+","+en+"]";
}
}



这个类实现这个接口有什么用啊?

而且他怎么自己可以比较就按分高的  排序呢 谁给我讲下个接口呢~ Comparable

作者: lizhangzhi    时间: 2013-10-1 18:55
这是通过复写comparable接口下的 compareTo()方法实现排序的;根据返回值类型是正整数,负整数,零,确定元素位置
作者: hanfei2511    时间: 2013-10-1 19:20
你可以查下java中这个接口的源文件,src文件夹下面直接就可以找到。因为我们再说也是和翻译它里面的内容差不多,而且里面很详细清楚哦,呵呵,祝顺。
作者: a283398689    时间: 2013-10-1 19:45
lizhangzhi 发表于 2013-10-1 18:55
这是通过复写comparable接口下的 compareTo()方法实现排序的;根据返回值类型是正整数,负整数,零,确定 ...

他是一次比较一个对象 还是一次比较所有对象呢?

作者: 血剑无痕    时间: 2013-10-8 21:41
实现Comparable
comparable:中的方法Comparable<T >T:对于初学者可以理解为object的类型
接口中的方法:compareTo(T o)
                  比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返
                回负整数、零或正整数。
@Override
public int compareTo(Student o) {
  int num = new Integer(this.sum).compareTo(new Integer(o.sum));
  if(num==0)
   return this.name.compareTo(o.name);
  return num;
}
这段代码就是重写了comparable中的方法使student对象具有了比较性所以输出的代码可以显示出
按照一定的顺序进行排序。
另外你可以看看看Comparator<T>这个接口。和comparable进行比较你会收获很多





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