其他分享
首页 > 其他分享> > TreeSet 的用法

TreeSet 的用法

作者:互联网

TreeSet 实现了 SortedSet 接口,可以对集合中的元素进行排序,前提要求集合中的元素必须可比较大小。

设置方法有两种:

  (1)比较器排序:在构造方法中指定 Comparator比较器。

  (2)自然排序:如果没有在构造方法中指定 Comparator,则要求 元素的类(eg:Student类) 实现 Comparable接口,并重写 compareTo(Object o)方法。

如果以上两种方法都设置了,则系统会选择 比较器排序,因为它优先于 自然排序。

 

 

 

 

 

 

 

import java.util.Objects;
/*
    1.该类实现一个 Comparable接口,该接口可以提供排序的方法
    2.重写 Comparable接口中的排序方法 compareTo()方法,该方法中提供排序规则
    3.将元素添加到集合中,就会按照你指定的排序规则进行排序
 */
public class Student implements Comparable<Student> {
    private String name;
    private int age;
    private int score;
    // Alt+Insert, 提供所有 Getter and Setter 方法
    public int getScore() { return score; }
    public void setScore(int score) { this.score = score; }
    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; }
    // 提供 有参构造 和 无参构造
    public Student() { }
    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    /*
    方法的返回结果,是用于控制集合中元素是否存在,以及存放顺序的
        返回   0:舍弃元素
        返回 正数:存入的元素放置在后面
        返回 负数:存入的元素放置在前面
     */
    @Override                                                  
    public int compareTo(Student o) {                          
        return this.score - o.score; // 比较分数(比较哪个就写哪个)
    }                                                          
}

 

标签:return,name,int,age,用法,score,public,TreeSet
来源: https://www.cnblogs.com/lwj0126/p/16211621.html