既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
首先访问根,再先序遍历左子树,最后先序遍历右子树
+ 中序遍历
首先中序遍历左子树,再访问根,最后中序遍历右子树
+ 后序遍历
首先后序遍历左子树,再后序遍历右子树,最后访问根
18.4. TreeSet的排序
18.4.1. TreeSet的简介
TreeSet是一个Set接口的实现类,底层实现是二叉树。这样的集合,会对添加进集合的元素进行去重的处理。 同时, 这个集合会对添加进入的元素进行自动的升序排序。
18.4.2. Comparable接口
如果某一个类实现这个接口, 表示自己实现了一个可以和自己的对象进行大小比较的规则。 此时, 这个类的对象就可以直接存储进TreeSet集合中了。 因为此时TreeSet集合已经知道了怎么对两个这个类的对象进行大小比较。
/**
* @Description
*/
public class Person implements Comparable<Person> {
String name;
int age;
int score;
int height;
int weight;
public Person(String name, int age, int score, int height, int weight) {
this.name = name;
this.age = age;
this.score = score;
this.height = height;
this.weight = weight;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
", height=" + height +
", weight=" + weight +
'}';
}
/**
* 制定了大小比较的规则
* @param o 和this进行比较的Person对象
* @return 比较结果
* > 0 : this > o
* ==0 : this == o
* < 0 : this < o
*/
@Override
public int compareTo(Person o) {
return this.age - o.age;
}
}
class TreeSetUsage2 {
public static void main(String[] args) {
// 1. 实例化一个TreeSet对象
TreeSet<Person> sets = new TreeSet<>();
sets.add(new Person("xiaoming", 10, 100, 165, 50));
sets.add(new Person("xiaohong", 11, 99, 164, 50));
sets.add(new Person("xiaolan", 9, 98, 164, 51));
sets.add(new Person("xiaolv", 8, 98, 166, 48));
sets.add(new Person("xiaozi", 10, 97, 159, 46));
// 2. 遍历集合
sets.forEach(System.out::println);
System.out.println(sets.size());
}
}
18.4.3. Comparator接口
在实例化TreeSet集合对象的时候,可以通过Comparator进行实例化。 此时, 这个集合有着自己的排序的依据, 与集合中存储的元素对应的类无关。 此时集合中存储的元素对应的类, 可以不实现Comparable接口, 依然可以完成排序。 即便这个类真的实现了Comparable接口, 最终的排序结果依然以构造方法中的Comparator为准。
/**
* @Description 通过Comparator进行比较
*/
public class TreeSetUsage3 {
public static void main(String[] args) {
// 1. 实例化一个TreeSet对象
// 可以通过Comparator进行TreeSet的实例化。使用指定的规则进行大小比较。
// 此时,集合中存储的元素可以不实现Comparable接口
TreeSet<Person> sets = new TreeSet<>((p1, p2) -> p1.height - p2.height);
sets.add(new Person("xiaoming", 10, 100, 165, 50));
sets.add(new Person("xiaohong", 11, 99, 164, 50));
sets.add(new Person("xiaolan", 9, 98, 164, 51));
sets.add(new Person("xiaolv", 8, 98, 166, 48));
sets.add(new Person("xiaozi", 10, 97, 159, 46));
// 2. 遍历集合
sets.forEach(System.out::println);
System.out.println(sets.size());
}
}
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**