我可以通过Java一次迭代两个数组吗?

问题描述 投票:0回答:3

对于一个数组,我可以像这样迭代:

for(String str:myStringArray){

}

如何一次迭代两个数组?因为我确信这两个长度相等。我想要它如下:

for(String attr,attrValue:attrs,attrsValue) {

}

但这是错的。

也许地图在这种情况下是一个不错的选择,但3个等长阵列怎么样?我只是讨厌创建索引'int i',它使用以下格式:

for(int i=0;i<length;i++){
}
java arrays
3个回答
1
投票

使用foreach语法无法执行所需操作,但可以使用显式索引来实现相同的效果。只有数组长度相同(或者使用其他规则,例如仅迭代到较短数组的末尾)才有意义:

这是检查数组长度相同的变体:

assert(attrs.length == attrsValue.length);
for (int i=0; i<attrs.length; i++) {
   String attr = attrs[i];
   String attrValue = attrsValue[i];
   ...
}

1
投票

你可以做旧时尚的方式。

假设您的阵列具有相同的大小:

for(int i = 0; i < array1.length; i++) {
   int el1 = array1[i];
   int el2 = array2[i];
}

在Scala中有一个用于集合的嵌入式zip功能,所以你可以做类似的事情

array1 zip array2

但它尚未移植到Java8 Collections。


1
投票

Foreach循环有许多优点,但也存在一些限制。

1:您一次只能迭代一个类(实现Iterable i / f)。

2:您没有索引控件。 (使用显式计数器。)

对于您的问题使用传统的for loop

© www.soinside.com 2019 - 2024. All rights reserved.