计算 ArrayList 中重复的二元素列表 (Groovy)

Count duplicate, two-element lists within ArrayList (Groovy)

我有一个包含两项的列表:

def list = [[key1, value1], [key1, value1], [key2, value1], [key2, value2], ...]

我正在尝试编写 Groovy 代码,它将使用 "list" 和 return 另一个列表,它不仅显示每个重复项的频率,而且还显示如果有独特的物品:

def newList = [[key1, value1:2], [key2, [value1:1, value2:1]], ...];

这种格式背后的原因是,如果特定 "key" 有多个 "value",我会编写更多代码来抛出错误。如果有更简单的方法来做到这一点,任何 help/suggestions 将不胜感激。

如果您在此处提问时展示您尝试过的内容,通常会有所帮助...

但在这种情况下,您只需要:

def result = list.groupBy { it[0] }
                 .collect { k, v -> [k, v.countBy { it[1] }] }

结果将等于:

[['key1', ['value1':2]], ['key2', ['value1':1, 'value2':1]]]

你也可以这样做:

def result = list.groupBy { it[0] }
                 .collectEntries { k, v -> [k, v*.getAt(1).unique().size() ] }

送给你:

['key1':1, 'key2':2]