计算 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]
我有一个包含两项的列表:
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]