1. Set集合和比较器

Set的特点:

  1. 去除重复
  2. 存储无序
  3. 没有索引

2. treeset集合

可以将元素按照规则进行排序,并且拥有set的特征

想要使用自定义类型并保存到treeset必须指定排序规则,否则无法使用treeset

3. 自然排序Comparable的使用

  1. 如果返回值为负数,表示当前存入元素是较小值,存左边
  2. 如果返回值为0,表示与当前元素重复了,不存储
  3. 如果返回值为正数,表示当前是较大值,存右边

Treeset的无参构造方法使用的是自然排序对元素进行排序

自定义类必须继承Comparable接口 泛型为自定义类,重写接口中的compareTo方法 返回一个int类型

  1. public class Student implements Comparable<Student>{
  2. private int age;
  3. @Override
  4. public int compareTo(Student o) {
  5. // this 为当前存储的元素 o为已存储集合中的元素
  6. return this.age- o.age;
  7. }
  8. }

4. 比较器排序 Comparator使用

Treeset的带参构造方法使用的比较器排序对元素进行排序

  1. TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
  2. @Override
  3. public int compare(Student o1, Student o2) {
  4. // o1为当前将要存入的元素 o2为集合中的元素
  5. return o1.getAge() - o2.getAge();
  6. }
  7. });
  8. //可以写成lambda表达式
  9. TreeSet<Student> ts2 = new TreeSet<>((o1, o2) -> {
  10. return o1.getAge() - o2.getAge();
  11. });