一、前言
我们都知道,TreeSet实现了SortedSet接口,会对集合元素自动排序。
那么,当我们需要存储自定义对象时,它是如何实现排序的呢?
在将数据存储到TreeSet中时,主要有两种方法实现对象的排序:
方法一:类必须实现Comparable接口方法二:创建TreeSet对象时,指定Comparator接口的实现类对象(即:指定比较器)
二、Comparable接口
需求:有一学生类,该类有name和age属性,需要在TreeSet集合中存储该类的对象,并且希望先按照name属性升序排序,然后在考虑按照age属性排序。
1 | public class Student implements Comparable<Student>{ |
1 | public class Demo01 { |
测试结果如下:
1 | [Student{name='aaa', age=21}, Student{name='aaa', age=22}, |
三、Comparator接口
需求:存储不同的字符串,希望先按照字符串的长度升序排序,然后再按照字母进行排序。
1 | public class Demo02 { |
测试结果如下:
1 | [cat, lisi, xian, beijing, nanjing, pingguo, zhangsan, helloworld] |
四、总结
在存储自定义对象时,一定要记得要么实现Comparable接口,要么给TreeSet对象传递Comparator接口的实现类对象。
否则,程序会报错哦!
Java新手,若有错误,欢迎指正!