浅谈TreeSet中的两种排序方式
直接上代码:
packageexercise1;
publicclassPersonimplementsComparable{
privateintid;
privateStringname;
publicPerson(intid,Stringname){
super();
this.id=id;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringtoString(){
return"Person[id="+id+",name="+name+"]";
}
publicinthashCode(){
finalintprime=31;
intresult=1;
result=prime*result+id;
result=prime*result+((name==null)?0:name.hashCode());
returnresult;
}
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!=obj.getClass())
returnfalse;
Personother=(Person)obj;
if(id!=other.id)
returnfalse;
if(name==null){
if(other.name!=null)
returnfalse;
}elseif(!name.equals(other.name))
returnfalse;
returntrue;
}
publicintcompareTo(Objecto){
if(oinstanceofPerson){
Personp=(Person)o;
returnthis.name.compareTo(p.name);
}
return0;
}
}
packageexercise1;
//TreeSet下的自然排序和定制排序
importjava.util.Comparator;
importjava.util.Iterator;
importjava.util.Set;
importjava.util.TreeSet;
importjava.util.function.Function;
importjava.util.function.ToDoubleFunction;
importjava.util.function.ToIntFunction;
importjava.util.function.ToLongFunction;
importorg.junit.Test;
//定制排序
publicclassDisOrder{
@Test
publicvoidunNature(){
Comparatorcom=newComparator(){
publicintcompare(Objecto1,Objecto2){
if(o1instanceofPerson&&o2instanceofPerson){
Personp1=(Person)o1;
Personp2=(Person)o2;
returnp1.getName().compareTo(p2.getName());
}
return0;
}
};
Setset=newTreeSet(com);
set.add(newPerson(111,"MM"));
set.add(newPerson(222,"DD"));
set.add(newPerson(333,"GG"));
for(Objectobj:set){
System.out.println(obj);
}
}
//自然排序
@Test
publicvoidnature(){
Setset=newTreeSet();
set.add("aa");
set.add("bb");
set.add("ff");
set.add("zz");
for(Objectobj:set){
System.out.println(obj);
}
}
}
以上这篇浅谈TreeSet中的两种排序方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。