欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TreeSet排序方法

程序员文章站 2022-05-14 13:08:00
...

A: TreeSet集合的特点: 元素唯一,并且可以对元素进行排序
排序:
a: 自然排序
b: 使用比较器排序
到底使用的是哪一种的排序取决于,构造方法.
B:案例演示: TreeSet存储Integer类型的元素并遍历
存储下列元素: 20 , 18 , 23 , 22 , 17 , 24, 19 , 18 , 24

注意:使用TreeSet集合进行元素的自然排序,那么对元素有要求,要求这个元素
必须实现Comparable接口 否则无法进行自然排序

  保证元素的唯一性是靠compareTo方法的返回值来确定如果返回0 表示两个元素相等
		则不重复存储
public class MyTest {
    public static void main(String[] args) {
        TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int num =o1.getAge() - o2.getAge();
                //如果年龄一样不能说明是同一个对象
                int num2 = num == 0 ? o1.getName().compareTo(o2.getName()) : num;
                return num;

            }
        });
        set.add(new Student("小萨", 29));
        set.add(new Student("李商隐", 230));
        set.add(new Student("小萨", 29));
        set.add(new Student("李白", 232));
        set.add(new Student("杜甫", 231));

        System.out.println(set);

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

    public Student() {
    }

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

    @Override
    public int compareTo(Student s) {
        int num = this.age - s.age;
        //如果年龄一样不能说明是同一个对象
        int num2 = num == 0 ? this.name.compareTo(s.name) : num;
        return num;
    }
}

结果为:[Student{name=‘小萨’, age=29}, Student{name=‘李商隐’, age=230}, Student{name=‘杜甫’, age=231}, Student{name=‘李白’, age=232}]

相关标签: TreeSet