使用groovy在Dictionary中打印数据

时间:2017-09-29 08:54:01

标签: groovy

我有字典

Output = [a:2, c:13, b:5, z:'Test']

我使用for循环如下

   for(i in Output){
       println(Output[i.key]);
   }

是结果。

2
13
5
Test

但我期待结果(反向)。

Test    
5
13
2

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

你拥有的不是"字典" (这不是Python),而是Map

未定义其条目的顺序,它只是一个没有任何排序的值的映射键。你获得的顺序是(伪)随机的,不能依赖。

顺便说一下。产生输出的Groovy方法越多,就不使用for-loop,而是e。克。

[a:2, c:13, b:5, z:'Test'].values().each { println it }

如果您想订购,则需要列表而不是地图,例如: G。像

中的地图列表
[[a:2], [c:13], [b:5], [z:'Test']].reverse().collectMany { it.values() }.each { println it }

中的列表列表
[['a', 2], ['c', 13], ['b', 5], ['z', 'Test']].reverse().collect { it[1] }.each { println it }

或者这个地图列表可能是这些解决方案中最干净的

[[key:'a', value:2], [key:'c', value:13], [key:'b', value:5], [key:'z', value:'Test']].reverse().collect { it.value }.each { println it }