Groovy如何将两个对应数据集按相同键合并分组
Groovy 按索引配对分组实现方案
核心思路
将两个列表相同索引位置的元素对应为键值对,按键分组后聚合所有对应的值即可。
完整可运行代码
// 定义输入数据集 def x = ['a', 'a', 'b', 'b', 'b'] def y = [1, 2, 3, 4, 5] // 核心处理逻辑:列表配对 -> 按key分组 -> 提取每组的value集合 def groupResult = [x, y].transpose() .groupBy { it[0] } .collectEntries { key, pairList -> [key, pairList.collect { it[1] }] } // 按要求格式输出 groupResult.each { k, v -> println "${k} = ${v.join(',')}" }
运行输出
a = 1,2 b = 3,4,5
补充说明
- 上述代码默认
x和y长度一致,若需要做长度校验,可在配对前添加断言:assert x.size() == y.size() - 若
x中的a、b为非字符串类型,只要对应类的equals和hashCode方法实现正常,代码无需调整即可直接使用
内容的提问来源于stack exchange,提问作者user16898106
相关产品推荐
相关产品推荐

