写一个Student类, 包含属性id[1-30), grade[1-6], score[0-100], 所有属性都是随机生成
创建一个Set集合, 保存20个对象, 如果两个对象的id是一样的,则不允许添加. 使用迭代器遍历集合,打印输出对象的信息,
并找出分数最高的同学和分数最低的同学, 最后打印输出最高分和最低分同学信息.
本人写的利用TreeSet的代码如下
public class HomeWork6Compare {
public static void main(String[] args) {
TreeSetset = new TreeSet(new Comparator() {
@Override
public int compare(Student1 stu1, Student1 stu2) {
if(stu1.id == stu2.id) {
return 0;
}
int result = stu1.score - stu2.score;
if(result == 0) {
return 1;
}
return result;
}
});
Random r = new Random();
Student1 s = null;
int id=0,grade=0,score=0;
while(set.size()<20) {
id = r.nextInt(29)+1;
grade = r.nextInt(6)+1;
score = r.nextInt(100)+1;
s = new Student1(id, grade, score);
set.add(s);
}
Iteratoriterator = set.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("分数最高的同学信息如下:");
System.out.println(set.first());
System.out.println("分数最低的同学信息如下:");
System.out.println(set.last());
}
}
运行截图如下图
发现运行结果中有多组重复id,经过几次检查也没发现compare方法有什么错误,后面自己取消随机数输入数据,手写了二十几组数据却发现没有重复id出现(这里就不拿出源码和运行截图,有兴趣的自己可以试试),后用HashSet去重,TreeSet排序解决了这个问题,但还是不懂单纯的TreeSet为什么不能做到去重,求大神指点。