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

时间:2017-04-17 16:15:10

标签: list groovy nested-lists

我有两个项目列表的列表:

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

我正在尝试编写Groovy代码,该代码将采用“list”并返回另一个列表,该列表不仅显示每个重复的两项列表的频率,而且还显示有独特的项目:

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

这种格式背后的原因是因为如果特定的“密钥”具有多个“值”,我会编写更多代码来抛出错误。如果有更简单的方法可以做到这一点,我们将不胜感激任何帮助/建议。

1 个答案:

答案 0 :(得分:1)

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

在这种情况下,你只需要:

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]