Java中的2种集合排序方法介绍
直接上代码:
importjava.util.ArrayList; importjava.util.Collections; importjava.util.Comparator; importjava.util.List; /** * *<p> *ClassNameCollectionsSort *</p> *<p> *Description主要介绍两种集合的排序算法<br/> *第一:java.util.Collections.sort(java.util.List),要求所排序元素必须实现java.lang.Comparable接口<br/> *第二:java.util.Collections.sort(java.util.List,java.util.Comparator),这个方法要求实现java.util.Comparator接口<br/> *第三:下面的例子使用的是对int型属性排序,对String属性排序可以使用以下方法<br/> *publicintcompareTo(Cato){returnthis.getName().compareTo(o.getName(0);}<br/> *第四:compareTo()函数的说明<br/> *如果结果;<br/> *<0a<b;<br/>= *==0a==b;<br/> *>=0a>b; *</p> * *@authorwangxuwangx89@126.com *<p> *Date2014-9-16下午04:52:57 *</p> *@versionV1.0 * */ publicclassCollectionsSort{ publicstaticvoidmain(String[]args){ //method1();测试第一个方法 method2();//测试第二个方法 } publicstaticvoidmethod1(){ List<Cat>list=newArrayList<Cat>(); Catc=newCat("a",10); list.add(c); c=newCat("b",20); list.add(c); c=newCat("c",3); list.add(c); //升序排列输出 Collections.sort(list); System.out.println(list); //降序排列输出 Collections.sort(list,Collections.reverseOrder()); System.out.println(list); } publicstaticvoidmethod2(){ List<Cat>list=newArrayList<Cat>(); Catc=newCat("a",10); list.add(c); c=newCat("b",20); list.add(c); c=newCat("c",3); list.add(c); Comparator<Cat>catComparator=newCat(); //升序排列输出 Collections.sort(list,catComparator); System.out.println(list); //降序排列输出 catComparator=Collections.reverseOrder(catComparator); Collections.sort(list,catComparator); System.out.println(list); } } classCatimplementsComparable<Cat>,Comparator<Cat>{ privateintage; privateStringname; publicCat(){ } publicCat(Stringname,intage){ this.age=age; this.name=name; } publicintgetAge(){ returnthis.age; } publicStringgetName(){ returnthis.name; } publicvoidsetAge(intage){ this.age=age; } publicvoidsetName(Stringname){ this.name=name; } //实现了Comparable接口,不要重写该方法 @Override publicintcompareTo(Cato){ //TODOAuto-generatedmethodstub returnthis.age-o.age; } @Override publicStringtoString(){ //TODOAuto-generatedmethodstub return"名字:"+getName()+",年龄:"+getAge(); } //实现了Comparator接口,需要重写该方法 @Override publicintcompare(Cato1,Cato2){ //TODOAuto-generatedmethodstub returno1.getAge()-o2.getAge(); } }