开发者学堂课程【Java 高级编程:分析 Treeset 子类排序操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/409
TreeSet排序说明
经过分析之后 TreeSet 子类之中保存的数据是允许排序的,但是这个类必须要实现Comparable 接口,只要实现了此接口才够确认出对象的大小关系。
提示:TreeSet 本质是利用 TreeMap 子类实现的集合数据的存储,而 TreeMap 就需要根据 Comparable 来确定大小好关系。
那么下面就使用一个自定义的类来实现排序的处理操作.
范例:实现自定义类排序
Package cn.mldn.demo;
import java.util.Set;
Import java.util.TreeSet;
Class Person implements Comparable <Peson>{ // 比较器
private String name;
Private int age;
Public Person(String name,int age){
This.name = name;
This.age = age;
}
public String toString (){
return “姓名,"+ this . name +"、年龄:"+ this . age ;
}
@Override
public int compareTo ( Person per ){
if(this . age < per . age ){
return -1;
} else if ( this . age > per . age ){
return 1;
} else {
return this . name . compareTo ( per . name );
}
}
}
pub1ic class JavaAPIDemo {
public static void main ( String [] args ) throws Exception{
Set < Person >al1= new TreeSet < Person >();/为 List 父接口进行实例化al1.add( new Person ("张三",19));
all . add ( new Person ("李四",19));//年齡相同,但是姓名不同
all . add ( new Person ("王五”,20));//数据重复
a11.add( new Person ("王五",20));//数据重复
a11.add( new Person ("小小强”,78));
all.forEach(System.out::println);
在使用自定义类对象进行比较处理的时候一定要将该类之中的所有属性都依次进行大小关系的匹配,否则如果某一个或某几个属性相同的时候它也会认为是重复数据,所以 TreeSet 是利用了 Comparable 接口来确认重复数据的。
由于 TreeSet 在操作过程之中需要将类中的所有属性进行比对,这样的实现难度太高了,那么在实际的开发之中应该首选 HashSet 子类进行存储。