set中的hashSet和treeSet相关概念
简而言之,带hashcode的数据集,都牺牲空间带有一个hash映射表,能进行快速的匹配查询。带tree的数据集可以认为是一棵有序的树形结构。
那么,hashcode结构不再具体详细说明。下来详细说下treeSet中的排序问题,分成自然排序,和自定义排序
1.自然排序是让set内部的元素自身实现comparable接口,实现comparTo方法,使元素即具有可比性,可以区分先后,相同与否
举例:
public class Grade implements Comparable<Grade>{//表示该类是定义重写了compareto方法是可以加入set中的,重复的祛除,保留有一定顺序的序列
Integer gradeId;
String gradeName;
public Grade(Integer gradeId, String gradeName) {
super();
this.gradeId = gradeId;
this.gradeName = gradeName;
}
@Override
public String toString() {
return "Grade [gradeId=" + gradeId + ", gradeName=" + gradeName + "]";
}
@Override
public int compareTo(Grade o) {
if(!this.gradeName.equals(o.gradeName)){
return(this.gradeName.compareTo(o.gradeName)>0?1:-1);
}else{
return this.gradeId<o.gradeId?-1:(this.gradeId>o.gradeId?1:0);
}
}
}
2.自定义排序,自定义一个比较器,实现comparator接口,实现了compare方法,而在新建set的时候,把比较器这个参数传入
Set setDemo=new Set(new Comparator());//自定义比较器
浙公网安备 33010602011771号