Groovy遍历Map

时间:2014-10-31 05:28:03

标签: groovy

我有一个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方法

3 个答案:

答案 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,那么代码就会更加可读。