A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↙五线谱╲ 中级黑马   /  2013-10-31 09:07  /  882 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

老师留下的作业是从控制台接受学生参数,格式如下
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

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 ヅ飞飞 于 2013-10-31 14:20 编辑

如果需要使用TreeSet,TreeMap容器时要实现Comparable接口重写compareTo方法。
当我们创建的一个类这个类需要实例化很多对象时,要用容器来封装对象。而使用不同容器需要对该类有不同操作,如:使用HashMap,HashSet是该类要重写hashCode方法和equals方法;使用TreeSet,TreeMap是该类要实现Comparable接口重写compareTo方法。当使用容器不确定时这些操作通常会都做。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报

TreeSet对元素进行排序的方式:

方式一:让元素具备比较功能。

元素需要实现comparable接口,覆盖compareTo()方法。如果不要按照对象中具备的自然顺序进行排序,如果对象中不具备自然

         顺序,那么就使用方式二。

方式二:让集合自身具备比较功能。

         定义一个类实现Comparator接口,覆盖compare方法,将该类对象作为参数

         传递给TreeSet集合的构造函数。
实现这个接口就是要重写compareTo方法,使之实现按照num大小排序。
int num = new Integer(this.sum).compareTo(new Integer(o.sum));
如果this.sum>o.sum,num为整数。
this.sum<o.sum,num为负数。
this.sum==o.sum,num==0,这时候就需要根据name来排序。
回复 使用道具 举报
和 入学测试题很相似的啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马