gpt4 book ai didi

Groovy: map 减少 map 列表

转载 作者:行者123 更新时间:2023-12-04 22:44:49 24 4
gpt4 key购买 nike

假设我有 Groovy 中的 map 列表:

def listOfMaps = [
[k: 1, n: 'Name1', d1: 'a', d2: 'b'],
[k: 2, n: 'Name2', d1: 'c', d2: 'd'],
[k: 1, n: 'Name3', d1: 'e', d2: 'f'],
[k: 4, n: 'Name4', d1: 'g', d2: 'h']]

我需要查找是否存在(或不存在)项目,其中 k 相等,但 n 不相等。例如。在这种情况下,我们有两个 map 记录,“k”=1,“n”是“Name1”和“Name3”。我怎样才能找到这样的数据?
我想我应该按“k”分组并计算“n”中的不同值,如果“n”中有多个特定“k”的唯一值 - 我们找到了这样的数据。
我完全被困住了,所以任何帮助将不胜感激。
谢谢

最佳答案

编辑

现在我已经弄清楚了你的意思,这是代码:

listOfMaps.groupBy { 
it.k }.
values().
findAll { l ->
l.size() > 1 && (l.size() == l.unique { e -> e.n }.size())
}

开始时,列表按 k 元素分组,然后在值中搜索大小大于 1 且大小等于唯一 n 元素计数的列表。它工作正常。

旧答案

您可以尝试 findAllunique 的组合:
def listOfMaps = [
[k: 1, n: 'Name1', d1: 'a', d2: 'b'],
[k: 2, n: 'Name2', d1: 'c', d2: 'd'],
[k: 1, n: 'Name3', d1: 'e', d2: 'f'],
[k: 4, n: 'Name4', d1: 'g', d2: 'h'],
]

listOfMaps.findAll { it.k == 1 }.unique { it.n }

或使用 groupBy :
listOfMaps.groupBy { it.k }[1].unique { it.n }

在 groovy 中,有很多方法可以做到;)

关于Groovy: map 减少 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32272860/

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