我在学java集合,上课听得很昏!这是一道作业不知怎么下手!题目:自定义一个Student类实现Comparable接口(该接口用于指定排序规则),Student类包含学号和姓名属性,使用TreeSet添加一组Student类的对象,然后循环输出学生信息! 请教大家帮我做做,还说下其中的原理!

解决方案 »

  1.   

    你看下String 它是如何实现这个接口的~
     你这样想~ java是怎么知道如何比较两个Student对象大小呢~~ 要用这个接口告诉它
      

  2.   

    public class Student implements Comparable {
    String name;
    int num;
    public Student(String name,int num){
    this.name=name;
    this.num=num;
    }
    public String getName(){
    return name;
    }
    public int getNum(){
    return num;
    }
    public int compareTo(Object o) {
    Student s=(Student)o;
    if(num<s.getNum()){
    return -1;
    }
    if(num>s.getNum()){
    return 1;
    }
    return 0;
    }
    }
    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Set set=new TreeSet();
    set.add(new Student("张三",4));
    set.add(new Student("李四",2));
    set.add(new Student("王五",3));
    set.add(new Student("赵六",1));
    Iterator nn=set.iterator();
    while(nn.hasNext()){
    Student s=(Student)nn.next();
    System.out.println(s.getNum()+" "+s.getName());
    }

    }}我是这样做的,分两个类写的!我先想问下,如果Student类不实现Comparable 接口,会怎么样?
    我不实现接口,调试报错了!运行不了!
      

  3.   

    不实现 肯定会报错的  因为你里面的元素是 自定义的类类型
    是自定义类型 就必须实现 comparable 的compareto()方法
      如果是单纯的 String 类型的话 你就没这么多烦恼了
      TreeSet 它会根据首字母的前后顺序 自动进行排序的
      

  4.   

    你在main方法里有用到排序吗>>  
     你用Set的 来遍历 和排序有什么关系??  
      

  5.   

    而且放在Set里面的对象是 没有顺序的