groovy对list<Map>按多个属性进行分组

将,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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值