本帖最后由 邓宫财 于 2013-4-7 15:00 编辑
- public class TreeSetTest {
- public static void main(String[] args) {
- TreeSet<Student> ts = new TreeSet<Student>();
- ts.add(new Student("a2", 32));
- ts.add(new Student("a1", 11));
- ts.add(new Student("a3", 31));
- System.out.println(ts);
- }
-
- static class Student implements Comparable{
- private String name = "";
- private int age = 0;
- public Student(String name,int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- @Override
- public int compareTo(Object o) {
- Student s = null;
- if(o instanceof Student){
- s = (Student)o;
- }
- //打印信息
- System.out.println(this.name + "----" + s.getName());
- //大于
- if(this.age > s.getAge()){
- return 1;
- }else if(this.age < s.getAge()){//小于
- return -1;
- }
- return 0;
- }
- }
- }
复制代码 我运行的时候,没有出现第一次会跟自己相比较。
不知道你们的代码是怎么实现的- public boolean add(E e)将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。更确切地讲,如果该 set 不包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则将指定元素 e 添加到此 set 中。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回 false。
复制代码 按照文档说的,如果是相同元素就不能被添加进去。
如果你们的代码第一次是跟自己比较的话a1 compareto a1,说明该集合已经存在一个这样的元素 a1,按理来说是添加不进去的。
|