gpt4 book ai didi

java - Groovy GroupBy 变量键集

转载 作者:行者123 更新时间:2023-12-02 00:57:45 31 4
gpt4 key购买 nike

我正在努力使用 groovy groupBy

我需要支持通过变量键集对数据集进行分组。

我编写了一个测试来解释我的困境,并且希望获得一些帮助来理解如何实现它:

https://groovyconsole.appspot.com/script/5155615986941952

List<Map> people = [
[
Sex: "Male",
Age: 30,
Job: "Programmer",
Name: "Boris"
],
[
Sex: "Female",
Age: 30,
Job: "Programmer",
Name: "Jennifer"
],
[
Sex: "Male",
Age: 40,
Job: "Web Designer",
Name: "Bob"
],
[
Sex: "Female",
Age: 20,
Job: "Database Admin",
Name: "Alice"
]
]


List results = []
if(people.groupBy({it.Sex}, {it.Age}) != groupBySpecifiedCols(people, ["Sex", "Age"])){
return "Failed 1"
}

if(people.groupBy({it.Sex}, {it.Age}, {it.Job}) != groupBySpecifiedCols(people, ["Sex", "Age", "Job"])){
return "Failed 2"
}

def groupBySpecifiedCols(List<Map> data, List<String> columns){
// IMPLEMENT HERE

return null
}


return "Success!"​​​​

最佳答案

实际上我想我刚刚解决了这个问题,经过几个小时的挫折后结果很简单:

def groupBySpecifiedCols(List<Map> data, List<String> columns){
List<Closure> groupByClosures = []
columns.each{ column ->
groupByClosures << { it[column] }
}

return data.groupBy(groupByClosures)
}

编辑正如评论中指出的,有一种可能更简洁的方法:

def groupBySpecifiedCols(List<Map> data, List<String> columns){
return data.groupBy(columns.collect{ col -> ((Closure){ it[col] })})
}

关于java - Groovy GroupBy 变量键集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61118351/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com