将,code,language,content组合作为key,这样的key一样的元素放进一个List中.然后把这个key和List放进Map里
import com.ittx.cbt.util.ObjectMapperFactory
import org.json.JSONArray
import org.json.JSONObject
def errorCodeList = [
[id:1,code: "1", language: "2", content: "3"],
[id:2,code: "1", language: "2", content: "4"],
[id:3,code: "1", language: "3", content: "5"],
[id:4,code: "1", language: "3", content: "6"],
[id:5,code: "2", language: "1", content: "3"],
[id:6,code: "2", language: "2", content: "3"],
[id:7,code: "1", language: "2", content: "4"]
]
Map<String,List> result = new HashMap()
List tempList = new ArrayList()
def c = errorCodeList.groupBy {
it.code
}.collectEntries({k,v->
[
(k) : v.groupBy({
it.language
}).collectEntries({ k2,v2->
[(k2) : v2.groupBy({
it.content
}).collectEntries({k3,v3->
[(k3):v3.collect({
String key = "${it.code}_${it.language}_${it.content}"
if(result.keySet().contains(key)){
tempList = result.get(key)
tempList.add(it)
//result.put(key,tempList)
}else {
tempList = new ArrayList()
tempList.add(it)
result.put(key,tempList)
}
it
})]
})]
})
]
})
println new JSONObject(result)