请教大虾:java实现Comparable接口问题?

rart2008 2010-05-26 03:03:25
我在学java集合,上课听得很昏!

这是一道作业不知怎么下手!

题目:

自定义一个Student类实现Comparable接口(该接口用于指定排序规则),Student类包含学号和姓名属性,使用TreeSet添加一组Student类的对象,然后循环输出学生信息!



请教大家帮我做做,还说下其中的原理!
...全文
102 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuminyuliang163 2010-05-26
  • 打赏
  • 举报
回复
而且放在Set里面的对象是 没有顺序的
yuminyuliang163 2010-05-26
  • 打赏
  • 举报
回复
你在main方法里有用到排序吗>>
你用Set的 来遍历 和排序有什么关系??
gegewozai 2010-05-26
  • 打赏
  • 举报
回复
不实现 肯定会报错的 因为你里面的元素是 自定义的类类型
是自定义类型 就必须实现 comparable 的compareto()方法
如果是单纯的 String 类型的话 你就没这么多烦恼了
TreeSet 它会根据首字母的前后顺序 自动进行排序的
rart2008 2010-05-26
  • 打赏
  • 举报
回复
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 接口,会怎么样?
我不实现接口,调试报错了!运行不了!
yuminyuliang163 2010-05-26
  • 打赏
  • 举报
回复
你看下String 它是如何实现这个接口的~
你这样想~ java是怎么知道如何比较两个Student对象大小呢~~ 要用这个接口告诉它
liwenso 2010-05-26
  • 打赏
  • 举报
回复
这个你得先自己做,做好了,如有疑问可以发上来,让大家帮你看看。

自己不动手的话,很难学好一样东西的。
宁静-夏天 2010-05-26
  • 打赏
  • 举报
回复
汗! 自己做! 你学这个以后很可能靠这个吃饭。

至少你得模仿别人来写。
rart2008 2010-05-26
  • 打赏
  • 举报
回复
谁帮我做做啊?
龙四 2010-05-26
  • 打赏
  • 举报
回复
OH MY GOD

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧