TreeSet笔记

package Set;

import java.util.Comparator;

public class Per implements Comparable<Per> {
    int age;
    String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Per{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public Per(int age, String name) {
        this.age = age;
        this.name = name;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    public int compareTo(Per o) {
        int n1 =this.getName().compareTo(o.getName());
        int n2 =this.age-o.age;
        return n1==0?n2:n1;
    }
}

package Set;

import java.util.TreeSet;

public class TreeSetTest {
    public static void main(String[] args) {
        //添加元素。所添加的元素必须实现comparable接口,重写compareTo方法,在这里compareTo方法若返回值为0则认为是重复元素
        TreeSet<Per> t1 =new TreeSet<>();
        System.out.println("----------------添加元素------------------");
        Per p1 =new Per(21,"棋棋");
        Per p2 =new Per(22,"杨杨");
        Per p3 =new Per(18,"瑶瑶");
        Per p4 =new Per(20,"瑶瑶");
        Per p5 =new Per(20,"杨杨");
        t1.add(p1);
        t1.add(p2);
        t1.add(p3);
        t1.add(p4);
        t1.add(p5);
        System.out.println("元素个数:"+t1.size());
        System.out.println(t1);
        //删除
        System.out.println("----------------删除元素------------------");
        t1.remove(new Per(21,"棋棋"));
        System.out.println("元素个数:"+t1.size());
        System.out.println(t1);

    }
}

输出结果:

----------------添加元素------------------
元素个数:5
[Per{age=20, name='杨杨'}, Per{age=22, name='杨杨'}, Per{age=21, name='棋棋'}, Per{age=18, name='瑶瑶'}, Per{age=20, name='瑶瑶'}]
----------------删除元素------------------
元素个数:4
[Per{age=20, name='杨杨'}, Per{age=22, name='杨杨'}, Per{age=18, name='瑶瑶'}, Per{age=20, name='瑶瑶'}]

需要注意的是: TreeSet的元素必须实现comparable接口,重写compareTo方法。因为这个集合需要对元素进行排序。如不实现接口重写方法,需要像以下代码一样,用Comparator接口自定义比较器。
即如果元素不具有比较性,那么就要让容器具有比较性。如果两种都存在,优先使用容器比较。

package Set;

import java.util.Comparator;
import java.util.TreeSet;

public class demo {
    public static void main(String[] args) {
        TreeSet<Per> pers =new TreeSet<>(new Comparator<Per>() {
            @Override
            public int compare(Per o1, Per o2) {
                int n1 = o1.getAge() - o2.getAge();
                int n2 = o1.getName().compareTo(o2.getName());
                return n1==0?n2:n1;
            }
        });
        Per p1 =new Per(21,"棋棋");
        Per p2 =new Per(22,"杨杨");
        Per p3 =new Per(18,"瑶瑶");
        Per p4 =new Per(20,"瑶瑶");
        Per p5 =new Per(20,"杨杨");
        pers.add(p1);
        pers.add(p2 );
        pers.add(p3);
        pers.add(p4);
        pers.add(p5);
        System.out.println(pers);
    }
}

class demo2{
    public static void main(String[] args) {
        TreeSet<String> t1 =new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int n1 =o1.length()-o2.length();
                int n2 =o1.compareTo(o2);
                return n1 ==0?n2:n1;
            }
        });
        String[] a ={"ad","awdawf","adawd","ww","a","we","av","b"};
        for (int i = 0; i < a.length; i++) {
            t1.add(a[i]);
        }
        System.out.println(t1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值