对 List 里面 Map 的指定 key 进行排序,重写Collections.sort() 方法
new HashSet<>(list) 构造函数,会打乱 list 原有的顺序
package com.bugyun.tmp;
public class CollectionTool {
/**
* @Description: 按照 args 由大到小排序
* @param list
* @param args
* @return void
* @throws
* @author beyond
* @date 2015-7-22
*/
public static void sort( List<Map<String, Object>> list , final String args ) {
if(StringUtil.isNotEmpty(args)){
Collections.sort(list, new Comparator<Map<String,Object>>() {
public int compare(Map<String,Object> mapOne, Map<String,Object> mapTwo) {
int flag = 0 ;
Double first = Double.valueOf(mapOne.get(args).toString());
Double second = Double.valueOf(mapTwo.get(args).toString());
if((first - second) > 0){
flag = -1 ;
}else if((first - second) < 0){
flag = 1 ;
}else{
flag = 0 ;
}
return flag ;
};
});
}
}
/**
* @Description: 按照 args 由小到大排序
* @param list
* @param args
* @return void
* @author beyond
* @date 2015-8-12
*/
public static void sortRev( List<Map<String, Object>> list , final String args ) {
if(StringUtil.isNotEmpty(args)){
Collections.sort(list, new Comparator<Map<String,Object>>() {
public int compare(Map<String,Object> mapOne, Map<String,Object> mapTwo) {
int flag = 0 ;
Double first = Double.valueOf(mapOne.get(args).toString());
Double second = Double.valueOf(mapTwo.get(args).toString());
if((first - second) > 0){
flag = 1 ;
}else if((first - second) < 0){
flag = -1 ;
}else{
flag = 0 ;
}
return flag ;
};
});
}
}
public static void main(String[] args) {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> mapOne = new HashMap<String, Object>();
Map<String,Object> mapTwo = new HashMap<String, Object>();
Map<String,Object> mapThree = new HashMap<String, Object>();
Map<String,Object> mapFour = new HashMap<String, Object>();
Map<String,Object> mapFive = new HashMap<String, Object>();
Map<String,Object> mapSix = new HashMap<String, Object>();
Map<String,Object> map7 = new HashMap<String, Object>();
Map<String,Object> map8 = new HashMap<String, Object>();
mapOne.put("gradeId", "1");
mapOne.put("clzssId", "1");
mapOne.put("score", 0.0);
mapTwo.put("gradeId", "1");
mapTwo.put("clzssId", "2");
mapTwo.put("score", 0.8);
mapThree.put("gradeId", "1");
mapThree.put("clzssId", "3");
mapThree.put("score", 0.0);
mapFour.put("gradeId", "1");
mapFour.put("clzssId", "3");
mapFour.put("score", 1.0);
mapFive.put("gradeId", "1");
mapFive.put("clzssId", "2");
mapFive.put("score", 1.0);
mapSix.put("gradeId", "1");
mapSix.put("clzssId", "4");
mapSix.put("score", 0.0);
map7.put("gradeId", "1");
map7.put("clzssId", "4");
map7.put("score", 1.0);
map8.put("gradeId", "1");
map8.put("clzssId", "4");
map8.put("score", 0.8);
list.add(mapOne);
list.add(mapTwo);
list.add(mapThree);
list.add(mapFour);
list.add(mapFive);
list.add(mapSix);
list.add(map7);
list.add(map8);
sortRev(list,"score");
/**
* new HashSet<>(list) 构造函数,会打乱 list 原有的顺序
*/
Set<Map<String,Object>> set = new HashSet<Map<String,Object>>(list);
for(Map<String,Object> map : list){
System.err.println(map);
}
for(Map<String,Object> map : set){
System.out.println(map);
}
}
}