public class A{
public xxxx fun(){
//业务逻辑
//xxxxxxxxxxxxxxxxxxx
//排序
Collections.sort(myList, new MyComparator(configValueList));
}
/**
*内部类实现排序
*configValueList 排序规则
*根据DtoList中的某一个字段,按照configValueList配置的规则来排序
*如configValueList ["a","b","c"]
*myList myList.get[0].getVal() = b,myList.get[1].getVal() = a,myList.get[2].getVal() = c
*那么排序后 myList.get[0].getVal() = a,myList.get[1].getVal() = b,myList.get[2].getVal() = c
*/
class MyComparator implements Comparator<Dto> {
private List<String> configValueList;
public MyComparator(List<String> configValueList) {
this.configValueList = configValueList;
}
@Override
public int compare(Dto dto1, Dto dto2) {
if(CollectionUtils.isEmpty(configValueList) || dto1 == null || dto2 == null){
return 0;
}
String val1 = dto1.getVal();
String val2 = dto2.getVal();
if(StringUtils.isBlank(val1) || StringUtils.isBlank(val2)){
return 0;
}
int sort1 = configValueList.indexOf(val1);
int sort2 = configValueList.indexOf(val2);
if(-1 == sort1 || -1 == sort2){
return 0;
}
return sort1 - sort2;
}
}
}