use*_*792 5 groovy multidimensional-array
我有3个阵列l1[,,,,], l2[,,,,] and l3[,,,,].每个都有5个字符.
e.g. l1["A","B","C","D","E"]
Run Code Online (Sandbox Code Playgroud)
2d阵列由这些组成
screen = [l1[],l2[],l3[]]
Run Code Online (Sandbox Code Playgroud)
所以它看起来如此:
screen = [[,,,,],[,,,,],[,,,,]]
Run Code Online (Sandbox Code Playgroud)
我怎么能遍历这个数组?
我打电话screen[5]吗?还是screen[l1[5]]?
我可以吗:
for (i in 1..15){
println screen[i]
}
Run Code Online (Sandbox Code Playgroud)
请帮忙!!!
如何迭代数组并调用不同的部分,例如1st element每个子数组?
谢谢
tim*_*tes 13
所以,给定:
List l1 = ['A', 'B', 'C', 'D', 'E']
List l2 = ['a', 'b', 'c', 'd', 'e']
List l3 = ['1', '2', '3', '4', '5']
List screen = [ l1, l2, l3 ]
Run Code Online (Sandbox Code Playgroud)
要迭代所有元素,您可以:
3.times { y ->
5.times { x ->
println screen[ y ][ x ]
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用mod和计算intdivx和y位置:
15.times { p ->
def x = p % 5
def y = p.intdiv( 5 )
println screen[ y ][ x ]
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要每个子列表中的第一个元素,您可以执行以下操作:
println screen*.head()
Run Code Online (Sandbox Code Playgroud)
或者,假设您想要每个子列表中的第3个元素:
println screen*.getAt( 2 )
Run Code Online (Sandbox Code Playgroud)
或者,您可以将所有项目放入一维列表中:
def inlineScreen = [ *l1, *l2, *l3 ]
Run Code Online (Sandbox Code Playgroud)
然后访问:
15.times { p ->
println inlineScreen[ p ]
}
Run Code Online (Sandbox Code Playgroud)
要么:
def x = 1, y = 1
println inlineScreen[ x + y * 5 ]
Run Code Online (Sandbox Code Playgroud)
或者,如果您总是希望将元素组合在一起很重要(例如,您总是希望将所有数组中的第二个元素组合在一起),那么您可以执行以下操作:
// groupedScreen == [['A', 'a', '1'], ['B', 'b', '2'], ['C', 'c', '3'], ['D', 'd', '4'], ['E', 'e', '5']]
def groupedScreen = [ l1, l2, l3 ].transpose()
Run Code Online (Sandbox Code Playgroud)
然后,要获得第3个元素,您可以这样做:
groupedScreen[ 2 ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15826 次 |
| 最近记录: |