1. Set集合和比较器
Set的特点:
- 去除重复
- 存储无序
- 没有索引
2. treeset集合
可以将元素按照规则进行排序,并且拥有set的特征
想要使用自定义类型并保存到treeset必须指定排序规则,否则无法使用treeset
3. 自然排序Comparable的使用
- 如果返回值为负数,表示当前存入元素是较小值,存左边
- 如果返回值为0,表示与当前元素重复了,不存储
- 如果返回值为正数,表示当前是较大值,存右边
Treeset的无参构造方法使用的是自然排序对元素进行排序
自定义类必须继承Comparable接口 泛型为自定义类,重写接口中的compareTo方法 返回一个int类型
public class Student implements Comparable<Student>{
private int age;
@Override
public int compareTo(Student o) {
// this 为当前存储的元素 o为已存储集合中的元素
return this.age- o.age;
}
}
4. 比较器排序 Comparator使用
Treeset的带参构造方法使用的比较器排序对元素进行排序
TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// o1为当前将要存入的元素 o2为集合中的元素
return o1.getAge() - o2.getAge();
}
});
//可以写成lambda表达式
TreeSet<Student> ts2 = new TreeSet<>((o1, o2) -> {
return o1.getAge() - o2.getAge();
});