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