groovy使用groupBy max将列表转换为映射
好的,这是一件相当简单的事情,但我无法理解。我有一个groovy列表,其中包含一些对象,如:groovy使用groupBy max将列表转换为映射,groovy,Groovy,好的,这是一件相当简单的事情,但我无法理解。我有一个groovy列表,其中包含一些对象,如: def listOfTings = [ ["type": "A", "value": 1], ["type": "B", "value": 3], ["type": "A", "value": 2], ["type": "B", "value": 2] ] 我想从中得到一个映射,比如groupBy(type)max(value): 但是我找不到groupBy方法,而且我还没有使用col
def listOfTings = [
["type": "A", "value": 1],
["type": "B", "value": 3],
["type": "A", "value": 2],
["type": "B", "value": 2]
]
我想从中得到一个映射,比如groupBy(type)max(value):
但是我找不到groupBy方法,而且我还没有使用collectEntries
找到它。是否有一些标准方法可以达到这样的效果?尝试以下方法:
listOfTings.groupBy { it.type }.collectEntries { [(it.key): it.value.max { it.value }.value] }
首先,groupBy
将创建按类型分组的列表映射
字段:
[A:[[type:A,value:1],[type:A,value:2]],B:[[type:B,value:3],[type:B,value:2]]
接下来,collectEntries
withit.value.max{it.value}
将选择具有最大value
字段的单个条目:
[A:[类型:A,值:2],B:[类型:B,值:3]]
使用it.value.max{it.value}.value
拾取value
将只提取value
字段,而不是整个条目:
[A:2,B:3]
希望有帮助:)
listOfTings.groupBy { it.type }.collectEntries { [(it.key): it.value.max { it.value }.value] }