List<Map>根据Map中的字段分组

List list = [
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"zhangsan","age":18],
["name":"lisi","age":256],
["name":"lisi","age":256],
["name":"lisi","age":256],
["name":"lisi","age":256],
["name":"lisi","age":256]
]
Map map = [:]//分组后的map,里面是一个个分组的list
list.each{
def item->
//先看看这个是否存在于新的map种
List li = map[item['name'] as String ] as List
//如果有
if(li){
//在这个列表种加入item,并蒋新的li放入map覆盖掉原来的
li.add(item as Map)
map.put(item['name'] as String,li)
}else{
//r如果没有,直接放入map
map.put(item['name'] as String,[item as Map])
}
}
log.info(Fx.json.toJson(map))
2023-02-13
0 0