a、自然排序
实现Comparable<>接口,在实现接口的同时确定泛型,告诉排序要比较的是什么数据类型。重写comparaTo(Object obj)方法.
调用者就是将要添加到集合中的元素,传入者是集合内部的元素.
b、比较排序
实现Comparator<>接口, 在实现接口的同时确定泛型,告诉排序要比较的是什么数据类型。作为参数传递给TreeSet集合.重写的是compare(参数1,参数2), 参数1是将要添加的元素,参数2是集合中已经存在元素。
区别:
自然排序是元素本身有了比较的功能。
比较器排序是让TreeSet集合具有比较的功能。
如果有自然排序和比较器排序,会优先去执行比较器排序,不再会执行自然排序。
自然排序和比较排序的作用和功能是一样,为什么要有两种排序?
因为:比较排序可以给实现特殊的排序,如TreeSet<Person>对name的长度进行排序。
|