直接上例子:
一个类
public class VO {
/**
* 名称.
*/
public String Name;
/**
* 类型.
*/
public String Type;
}
要实现:List<vo> list 中的VO类先按Type排序,如果type一样再按Name排序;
方法一:
VO 继承 Comparable接口
代码如下:
public class VO implements Comparable<VO>{
@Override
public int compareTo(VO arg0) {
if(this.Type == null){
return 1;
}
//先用类型进行比较
int ret = this.Type.compareTo(arg0.Type());
//如果类型一样,还继续比较名称
if(ret==0){
return this.Name.compareTo(arg0.Name());
}
//如果类型不一样,直接得出结果,用类型比较返回值排序
return ret;
}
/**
* 名称.
*/
public String Name;
/**
* 类型.
*/
public String Type;
}
再在使用list处调用
Collections.sort(list)
方法二:
不用修改VO类
直接利用方法:
sort(List arg0, Comparator arg1);
代码如下:
Comparator<VO> comparator = new Comparator<VO>(){
@Override
public int compare(VO arg0, VO arg1) {
if(arg0.Type == null){
return 1;
}
//先用类型进行比较
int ret = arg0.getType().compareTo(arg1.getType());
//如果类型一样,还继续比较名称
if(ret==0){
return arg0.getName().compareTo(arg1.getName());
}
//如果类型不一样,直接得出结果,用类型比较返回值排序
return ret;
}};
//对list进行排序
Collections.sort(list, comparator);