Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy中的groupby_Groovy_Collections_Grouping - Fatal编程技术网

Groovy中的groupby

Groovy中的groupby,groovy,collections,grouping,Groovy,Collections,Grouping,我有一个对象列表如下 [["GX 470","Model"],["Lexus","Make"],["Jeep","Make"],["Red","Color"],["blue","Color"]] 我想把它转换成 {"Model":["GX 470"],"Make":["Lexus","Jeep"],"Color":["Red", "blue"]} 我试过了 list.groupBy{ it[1] } 但这会让我回心转意 {"Model":[["GX 470","Model"]],"Make

我有一个对象列表如下

[["GX 470","Model"],["Lexus","Make"],["Jeep","Make"],["Red","Color"],["blue","Color"]]
我想把它转换成

{"Model":["GX 470"],"Make":["Lexus","Jeep"],"Color":["Red", "blue"]}
我试过了

list.groupBy{ it[1] }
但这会让我回心转意

{"Model":[["GX 470","Model"]],"Make":[["Lexus","Make"],["Jeep","Make"]],"Color":[["Red","Color"],["blue","Color"]]}

这是因为
groupBy
不会从原始对象中删除它分组所依据的元素,因此您只需按一个键分组即可获得所有原始数据

您可以使用
inject
(和
withDefault
)进行更多自定义分组:

list.inject([:].withDefault{[]}) { map, elem ->
    map[elem[1]] << elem[0]
    map
}
list.inject([:].withDefault{[]}){map,elem->

映射[elem[1]]您可以将中间结果进一步转换:

list.groupBy{ it[1] }.collectEntries{ k, v -> [(k):v*.get(0)] }
list.groupBy{ it[1] }.collect { key,value -> value.get(0) }