在Java里,List是一非常实用且常用的容器,特别在JavaEE里,我经常会用它装载一类Bean的对个对象。今天偶遇上对List的排序问题,现特意写下心得:
对于List的排序,Java很有一套:
第一步:定义一个比较器:具体为定义一个实现Comparator<T>接口的类,并重写compare方法,定义排序的条件。
这里有几点要注意:1、建议Comparator<T>里德T类型与将要排序的List<T>的T要一致,默认为Object类型。
2、重写compare方法时,要注意不同比较条件下返回值的区别,返回值可有:1,0,-1,这些返回值的不同会影响到排序的顺序,详见下一例子:
public class ArrayComparator implements Comparator<LocationVo>{
@Override
public int compare(LocationVo obj1, LocationVo obj2) {
if(obj1.getLength()==obj2.getLength()){
return 0;
} else if(obj1.getLength()>obj2.getLength()){
return 1;
} else {
return -1;
}
}
}
然后的步骤就十分简单了:
ArrayList<LocationVo> list = new ArrayList<LocationVo>();
.............
Collections.sort(list,new ArrayComparator());