1.简单的一个字段的数组排序
/**
* @param List 要排序的数组
* @param type 是否要降序排
* @param field 排序的字段
* */
public List<Map<String,Object>> Sort(List<Map<String,Object>> List,boolean type,String field){
//排序
Collections.sort(List, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
// 进行排序
if (Integer.parseInt(String.valueOf(o1.get(field))) > Integer.parseInt(String.valueOf(o2.get(field)))) {
return 1;
}
if (Integer.parseInt(String.valueOf(o1.get(field))) == Integer.parseInt(String.valueOf(o2.get(field)))) {
return 0;
}
return -1;
}
});
//降序
if(type){
Collections.reverse(List);
}
return List;
}
2.如果要根据两个字段进行排序可用下面的(比如根据年份和月份排序的),不过也适用一个字段排序的
/**
* @param List 要排序的数组
* @param type 是否要降序排
* @param isMultiple 是否多字段排序
* @param field 排序的字段
* @param field2 排序的字段2
* */
public List<Map<String,Object>> Sort(List<Map<String,Object>> List,boolean type,boolean isMultiple,String field,String field2){
//排序
Collections.sort(List, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
// 进行排序
if (Integer.parseInt(String.valueOf(o1.get(field))) > Integer.parseInt(String.valueOf(o2.get(field)))) {
return 1;
}
if (Integer.parseInt(String.valueOf(o1.get(field))) == Integer.parseInt(String.valueOf(o2.get(field)))) {
if(isMultiple){
if (Integer.parseInt(String.valueOf(o1.get(field2))) > Integer.parseInt(String.valueOf(o2.get(field2)))) {
//降序
if(type){
return -1;
}else{
return 1;
}
}
}
return 0;
}
return -1;
}
});
//降序
if(type){
Collections.reverse(List);
}
return List;
}