实现 groovy(java) 的groupBy探索和 groupBy 2次

来源:互联网 发布:中国 程序员 总数 2017 编辑:程序博客网 时间:2024/04/29 06:45
@Test    void testBytetoString() {        def errorCodeList = [                [code: "1", language: "2", content: "3"],                [code: "1", language: "2", content: "4"],                [code: "1", language: "3", content: "5"],                [code: "1", language: "3", content: "6"],                [code: "2", language: "1", content: "3"],                [code: "2", language: "2", content: "3"],                [code: "1", language: "2", content: "4"]        ]
  • 多次groupBy
def b =  errorCodeList.groupBy {            it.code        }.collectEntries {k, v ->            [(k): v.groupBy {                it.language            }.collectEntries {k2, v2 ->                [(k2): v2.collect {                    it.content                }]            }]        }        println b
  • 自己实现 groupByKey
def a = groupByKey(errorCodeList, "code").collectEntries { k, v ->            def tmpv = groupByKey(v, "language").collectEntries { k2, v2 ->                [(k2): v2.collect {                    it["content"]                }]            }            [(k): tmpv]        }        println a  static HashMap<String, List> groupByKey(List<Map> list, String field) {        HashMap store = new HashMap<String, List>()        for(Map map : list) {            String key = map[field]//            map.remove(field)            if (store.containsKey(key)) {                store.replace(key, store.get(key) + map)            } else {                store.put(key, [map])            }        }        store    }
0 0
原创粉丝点击