我有3个数组,l1[,,,,], l2[,,,,] and l3[,,,,]
。每个都有5个字符。
e.g. l1["A","B","C","D","E"]
2d阵列由这些
组成screen = [l1[],l2[],l3[]]
所以它看起来如此:
screen = [[,,,,],[,,,,],[,,,,]]
如何迭代这个数组?
我打电话给screen[5]
吗?还是screen[l1[5]]
?
for (i in 1..15){
println screen[i]
}
请帮助!!!
如何迭代数组并调用不同的部分,例如每个子数组的1st element
?
由于
答案 0 :(得分: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 ]
要迭代所有元素,您可以这样做:
3.times { y ->
5.times { x ->
println screen[ y ][ x ]
}
}
或者,您可以使用mod
和intdiv
来计算x和y位置:
15.times { p ->
def x = p % 5
def y = p.intdiv( 5 )
println screen[ y ][ x ]
}
或者,如果您想要每个子列表中的第一个元素,您可以执行以下操作:
println screen*.head()
或者,假设您想要每个子列表中的第3个元素:
println screen*.getAt( 2 )
或者,您可以将所有项目放入一维列表中:
def inlineScreen = [ *l1, *l2, *l3 ]
然后通过以下方式访问:
15.times { p ->
println inlineScreen[ p ]
}
或:
def x = 1, y = 1
println inlineScreen[ x + y * 5 ]
或者,如果您总是希望将元素组合在一起很重要(例如,您总是希望将所有数组中的第二个元素组合在一起),那么您可以这样做:
// groupedScreen == [['A', 'a', '1'], ['B', 'b', '2'], ['C', 'c', '3'], ['D', 'd', '4'], ['E', 'e', '5']]
def groupedScreen = [ l1, l2, l3 ].transpose()
然后,要获得第3个元素,您可以这样做:
groupedScreen[ 2 ]