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

时间:2014-11-17 05:37:03

标签: java arrays

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

for(String str:myStringArray){

}

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

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

}

但这是错的。

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

for(int i=0;i<length;i++){
}

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

你可以用旧时尚的方式做。

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

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

在Scala中有一个用于集合的嵌入式zip函数,因此您可以执行类似

的操作
array1 zip array2

但它还没有移植到Java8 Collections。

答案 2 :(得分:1)

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

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

2:您没有索引控件。 (使用明确的计数器。)

对于您的问题,请使用旧版for loop