该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么添加重复元素 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());
}
}
}