class FxTools {
/**
* 将List中的每一条Map数据,按照指定参数进行排序(适用于value=数字)
* @param args 需要排序的集合
* @param sortKey 传入需要排序的key
* @param recordSortNumber 传入key 进行重新编号
* @param sortBoolean true/false 升序/降序
* zar
*/
public static List sortMapByArg(List args,String sortKey,String recordSortNumber ,boolean sortBoolean) {
Map beforeSortMap = [:];
List resultDatas = [];
List itemList = [];
List copyArgs = args as List;
copyArgs.eachWithIndex{ item, index ->
Map map = item as Map;
beforeSortMap.put(index, map[sortKey]) // 这里需要指定按照某个参数进行排序
}
log.info("beforeSortMap:"+beforeSortMap)
List values = beforeSortMap.values() as List;
values = values.sort(sortBoolean)
values.each { item ->
beforeSortMap.each{ Object k,v ->
int key = k as int;
int value = v as int;
if( item == value && !resultDatas.contains(key) ) {
resultDatas.add(key)
}
}
}
log.info("res: " + resultDatas)
resultDatas.each { item ->
int index = item as int;
itemList.add(copyArgs[index])
}
log.info("itemList:"+itemList)
//重新编号
/* List NEW_itemList = []
if(itemList.size()>0){
itemList.eachWithIndex{ item1, index1 ->
Map getmap = item1 as Map
Map NEW_Map = [:]
getmap.each { key,value ->
if(key == recordSortNumber){
NEW_Map.put(recordSortNumber,index1+1)
}else{
NEW_Map.put( key,value)
}
}
NEW_itemList.add(NEW_Map)
}
itemList = NEW_itemList
}*/
return itemList;
}
public static void main(String[] arg) {
//案例
String jsomStrng = "{\"X\":[{\"status\":\"1\",\"dept_code\":10001,\"AAA\":\"你好\",\"endda\":20220427},{\"status\":\"0\",\"dept_code\":10003,\"AAA\":\"你好\",\"endda\":20220427},{\"status\":\"0\",\"dept_code\":10004,\"AAA\":\"你好\",\"endda\":20220429},{\"status\":\"1\",\"dept_code\":10002,\"AAA\":\"你好\",\"endda\":20220429}]}"
Map pushData = Fx.json.parse(jsomStrng) as Map;
List businessDatas = pushData["X"]as List;
log.info("升序:"+FxTools.sortMapByArg(businessDatas,"dept_code","dept_code",true)) //升序
log.info("降序:"+FxTools.sortMapByArg(businessDatas,"dept_code","dept_code",false)) //降序
}
}