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();
}
}
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下