一、1.TreeSet原理:
* TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法。
* Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现异常(没有顺序)。
* 如果想把自定义类的对象存入TreeSet进行排序, 那么必须实现Comparable接口
* 在类上implement Comparable
* 重写compareTo()方法
* 在方法内定义比较算法, 根据大小关系, 返回正数负数或零
* 在使用TreeSet存储对象的时候, add()方法内部就会自动调用compareTo()方法进行比较, 根据比较结果使用 二叉树形式进行存储
二、对自定义的一个类进行重新定义排序方法。
step1:让这个类先实现Comparablejiekou;
step2:重写comparato方法,在方法中定义逻辑。(自己定义比较方法);
如下图:
自定义一个Student类,实现comparable接口,重写comparato方法。在本类中我给了两个成员变量,我使其规定为按照其的age大小进行排序,this.age为本类实例的age,s.age为向上转型的格式,是将其要比较的对象向上转型为一个Student类。retuen其中return的(1,0,-1)将其作为结果返回代表的是大于,等于与小于。就是两个实例进行比较之后所得到的大小关系。(else if中加的判定为当年龄相等时,就去比较name,比较name的方法为treeset中默认的比较String的方法,然后得出大小关系。最后一个return的意思为当你要比较的对象不属于Student这个类时,使这个类小于所比较的所有的类,但我在声明集合类型的时候就已经声明为只能存放Student类型的,所以,不存在走最后走一个return的情况)。