对于一个数组,我可以像这样迭代:
for(String str:myStringArray){
}
如何一次迭代两个数组? 因为我确信这两个长度相等。我想要它如下:
for(String attr,attrValue:attrs,attrsValue) {
}
但这是错的。
在这种情况下,也许地图是一个不错的选择,但3个等长阵列怎么样?我只是讨厌创建索引' int i'以下列格式使用:
for(int i=0;i<length;i++){
}
答案 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
。