TreeSet的排序方式
不重复,无索引,可排序,基于红黑树的数据结构、
第一种排序方式:


比较a后,比较第二个字母,b大于a所以ab在aaa后。c>a所以cd在aba后面。
实现类:
在Student类中实现Comparable接口,可以规定排序方式



原理图:this表示当前要添加元素,o表示已经存在的红黑树元素,返回值i<0认为添加的元素是小的,存左边,正数存右边,0表示已存在,舍弃掉。

用默认排序进行练习:
排序方式Student类中国
@Overridepublic int compareTo(Student o) {int sum1 = this.getChinese() + this.getMath() + this.getEnglish();int sum2 = o.getChinese() + o.getMath() + this.getEnglish();int i = sum1 - sum2;i = i == 0 ? this.chinese - o.getChinese() : i;i = i == 0 ? this.getMath() - o.getMath() : i;i = i == 0 ? this.getEnglish() - o.getEnglish() : i;i = i == 0 ? this.getAge() - o.getAge() : i;i = i == 0 ? this.getName().compareTo(o.getName()):i;return i;}
}
测试类中:
import java.util.TreeSet;public class TreeSe {static void main() {Student s1 = new Student("chen",23,90,99,50);Student s2 = new Student("wang",24,90,98,50);Student s3 = new Student("cao",24,90,98,50);Student s4 = new Student("cai",26,95,100,30);Student s5 = new Student("zhang",26,70,80,70);//2.TreeSet<Student> ts = new TreeSet<Student>();ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);for (Student t : ts) {System.out.println(t);}}
}
结果如图:
第二种排序方式:比较器排序

用此方法来进行字符串长度的排序,因为默认的排序满足不了要求,(默认的排序是按照首字母,依次进行大小排序)

假如方式一和方式二都存在,以方式二为主

