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();
}
}