java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

为什么添加重复元素 E 也能添加进去 ?我运行了下看。

先是 添加了 A,然后添加 E,E 和A比较;添加C,C和A、E比较;添加F,F和C、E比较,(为什么F不先和A比较);添加B,B和 C ,E,F比较(为什么B不先和A比较?);最后添加有重复的元素 E,为什么E先和C 比较? 为什么不再和原来的E比较了? 不懂!

import java.util.*;

class Student implements Comparable

{

private String name;

private int math,english,chinese;

private int sum;

Student(String name ,int math,int english,int chinese)

{

this.name = name;

this.math = math;

this.english = english;

this.chinese = chinese;

sum = math+english+chinese;

}

public String getName()

{

return name;

}

public int getSum()

{

return sum;

}

public String toString()

{

return getName()+":"+getSum();

}

public int compareTo(Object obj) //对元素进行比较

{

Student s=(Student)obj;

if(this.getSum()>s.getSum()) //分数大的时候

{

System.out.println(this.name+":"+this.sum+">>>>."+s.name+":"+s.sum);

return 1;

}

else if(this.getName().equals(s.getName()) && this.getSum()==s.getSum()) //同一个人的时候

{

System.out.println(this.name+":"+this.sum+"====="+s.name+":"+s.sum);

return 0;

}

else //分数小或者是 分数相等但是不是同一个人的时候

{

System.out.println(this.name+":"+this.sum+"<<<<

return -1;

}

}

}

class StudentSetDemo

{

public static void main(String[] args)

{

TreeSet ts = new TreeSet();

ts.add(new Student("A",10,20,30));

ts.add(new Student("E",40,20,30));

ts.add(new Student("C",20,20,50));

ts.add(new Student("F",60,20,60));

ts.add(new Student("B",70,10,40));

ts.add(new Student("E",40,20,30)); //有重复,但是结果也添加进去了,不知道为什么

Iterator iter = ts.iterator();

while(iter.hasNext())

{

System.out.println(iter.next());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值