对于一个数组,我可以像这样迭代:
for(String str:myStringArray){
}
如何一次迭代两个数组?因为我确信这两个长度相等。我想要它如下:
for(String attr,attrValue:attrs,attrsValue) {
}
但这是错的。
也许地图在这种情况下是一个不错的选择,但3个等长阵列怎么样?我只是讨厌创建索引'int i',它使用以下格式:
for(int i=0;i<length;i++){
}
使用foreach语法无法执行所需操作,但可以使用显式索引来实现相同的效果。只有数组长度相同(或者使用其他规则,例如仅迭代到较短数组的末尾)才有意义:
这是检查数组长度相同的变体:
assert(attrs.length == attrsValue.length);
for (int i=0; i<attrs.length; i++) {
String attr = attrs[i];
String attrValue = attrsValue[i];
...
}
你可以做旧时尚的方式。
假设您的阵列具有相同的大小:
for(int i = 0; i < array1.length; i++) {
int el1 = array1[i];
int el2 = array2[i];
}
在Scala中有一个用于集合的嵌入式zip功能,所以你可以做类似的事情
array1 zip array2
但它尚未移植到Java8 Collections。
Foreach循环有许多优点,但也存在一些限制。
1:您一次只能迭代一个类(实现Iterable i / f)。
2:您没有索引控件。 (使用显式计数器。)
对于您的问题使用传统的for loop
。