java List利用Comparator进行排序

时间:2022-05-20 22:39:36

直接上例子:

一个类

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