当前位置:   article > 正文

Java集合——TreeSet_java的treeset

java的treeset

TreeSet

存储结构:红黑树

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

简单示例

package set;

import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<String> tree = new TreeSet<String>();
        tree.add("a");
        tree.add("b");
        tree.add("c");
        tree.add("abc");
        System.out.println(tree.size());
        tree.forEach(System.out::println);
        System.out.println("---------------");
        System.out.println(tree.toString());
        tree.remove("b");
        System.out.println("-------------");
        tree.forEach(System.out::println);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

详细示例1(使用Comparable接口)

在这里插入图片描述

为了将自定义类添加进TreeSet我们需要这样做

编写自定义类继承Comparable接口实现

package set.entity;

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

    public Person() {
    }

    public Person(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 String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Person o) {

        //比较结果:若比较结果相同则为0,不同则返回字典比较差值
        int nameComp = this.getName().compareTo(o.getName());
        int ageComp = this.getAge() - o.getAge();
        System.out.println("..........");
        System.out.println(nameComp);
        return nameComp == 0 ? ageComp : nameComp;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

测试类

package set;

import set.entity.Person;

import java.util.TreeSet;

public class TreeSetDemo2 {
    public static void main(String[] args) {
        TreeSet<Person> tree = new TreeSet<>();
        tree.add(new Person("zhangsan",10));
        tree.add(new Person("wangqiang",18));
        tree.add(new Person("lisi",15));
        tree.forEach(System.out::println);
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果

在这里插入图片描述

详细示例2(使用Comparator接口)

package set;

import set.entity.Person;

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

public class TreeSetDemo3 {
    public static void main(String[] args) {
        TreeSet<Person> tree = new TreeSet<>(new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                int nameCom = o1.getName().compareTo(o2.getName());
                int ageCom = o1.getAge() - o2.getAge();
                return nameCom == 0 ? ageCom : nameCom;
            }
        });

        tree.add(new Person("zhangsan",10));
        tree.add(new Person("wangqiang",18));
        tree.add(new Person("lisi",15));
        tree.forEach(System.out::println);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1003408
推荐阅读
相关标签
  

闽ICP备14008679号