我有一个groovy map
,它拥有这种价值
Map testMap = [1:[1,1,1],2:[2,2,2]]
这时我打电话给collect
这样的功能
testMap.collect {it.value}
我得到output
喜欢
[[1, 1, 1], [2, 2, 2]]
但我希望output
为[1,1,1,2,2,2]
是实现此目的的任何groovy
方法,without using each
方法
答案 0 :(得分:7)
您可以使用groovy的flatten()方法。
testMap.collect {it.value}.flatten()
答案 1 :(得分:7)
甚至有更简单的解决方案
[1:[1,1,1],2:[2,2,2]].collectMany{it.value}
答案 2 :(得分:6)
这里有几个解决方案使用了收集族,如果你对数据进行突变,这是好的,但在这种情况下,它只是抓住所有使用扩展运算符更好地服务的值。地图
testMap*.value.flatten()
或地图上的功能
testMap.values().flatten()
在展开地图的每个元素时注意value
,并在一次性直接询问地图时注意条目值values()
。
这两者都更多地读取“从testMap中获取值”而不是通常用于地图上的突变的收集。
这是一个风格问题,但如果你只是在改变数据时使用collect,那么代码就会更加可读。