浅谈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中的两种排序方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。