集合框架第22天(TreeSet的定义及使用,Comparable接口方法重写)

TreeSet

  • 基于排列顺序实现元素不重复
  • 实现了SortedSet接口,对集合元素自动排序
  • 元素对象的类型必须实现Comparable接口,指定排序规则
  • 通过CompareTo方法确定是否为重复元素

TreeSet简单使用(存储简单类型)

//创建集合
        TreeSet<String> treeSet=new TreeSet<String>();
        //1.添加元素
        treeSet.add("xyz");
        treeSet.add("abc");
        treeSet.add("hello");
        System.out.println("元素个数"+treeSet.size());
        System.out.println(treeSet.toString());
//        //2.删除元素
//        treeSet.remove("abc");
//        System.out.println(treeSet.toString());
        //3.遍历
        //增强for
        System.out.println("-----增强for-----");
        for (String st:treeSet
             ) {
            System.out.println(st);
        }
        //迭代器
        System.out.println("-----迭代器-----");
        Iterator<String> it= treeSet.iterator();
        while (it.hasNext())
        {
            System.out.println(it.next());
        }
        //4判断
        System.out.println(treeSet.contains("abc"));
        System.out.println(treeSet.isEmpty());;

image

TreeSet使用(存储复杂类型数据)

存储结构:红黑树
要求:元素必须实现Comparable接口,重写CompareTo()方法,CompareTo()方法的返回值为0,则认为是重复元素-----或者在创建集合的时候就使用Comparator
重写如下:

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

image
接下来就可以正常使用了

//创建集合
        TreeSet<Person> pers=new TreeSet<Person>();
        //添加元素
        //1,添加数据
        Person p1 = new Person("张三", 22);
        Person p2 = new Person("李四", 23);
        Person p3 = new Person("王五", 20);
        pers.add(p1);
        pers.add(p2);
        pers.add(p3);
        System.out.println("集合个数:"+pers.size());
        System.out.println(pers.toString());
//        //2,删除
//        pers.remove(p2);
//        System.out.println(pers.toString());
        //3,遍历
        //增强for循环
        System.out.println("-----增强for-----");
        for (Object ob:pers
             ) {
            System.out.println(ob);
        }
        //迭代器
        System.out.println("-----迭代器-----");
        Iterator<Person> it=pers.iterator();
        while (it.hasNext())
        {
            System.out.println(it.next());
        }
        //4,判断
        System.out.println(pers.contains(p2));
        System.out.println(pers.isEmpty());

image

posted @ 2022-07-12 23:36  不再犹豫27  阅读(51)  评论(0)    收藏  举报