既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
/**
-
@Description
*/
public class Person implements Comparable {
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 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 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());
}
}
#### **18.4.4. Comparable与Comparator的使用场景**
* 如果这个对象, 在项目中大多数的情况下, 都采用相同的大小比较的方式。 比如: 一个Person类, 在大多数情况下, 都是按照年龄进行大小比较的。 此时就可以让Person类实现Comparable接口。
* 如果某一个类的对象, 在临时进行大小比较的时候, 使用的与默认的比较不一样的规则。 比如: 一个Person类, 大多数情况下, 都是使用的年龄进行大小比较的, 但是临时需要使用身高进行一次比较, 此时就可以使用 Comparator 临时完成了。 而且, Comparator的优先级要高于Comparable。
### **18.5. Set集合的去重原理**
#### **18.5.1. HashSet & LinkedHashSet**
![](https://img-blog.csdnimg.cn/a7721e4fd1e7483cb9e9e9ef10e32aa7.png)
#### **18.5.2. TreeSet**
无论使用Comparator还是Comparable,如果两个对象进行大小比较的结果是0, 此时代表这两个对象是相同的对象。 在TreeSet中会完成排重的处理。
**注意:** TreeSet中元素的去重只与对象的大小比较结果有关。 与hashCode()、equals(), 没有任何关系。
![img](https://img-blog.csdnimg.cn/img_convert/bc30a764f999724f0c0d97a6e0d3d151.png)
![img](https://img-blog.csdnimg.cn/img_convert/fcec604018a33e7fff210a190ed9e258.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**