[英]Can I iterate over two arrays at once in Java?
对于一个数组,我可以这样迭代:
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:您没有索引控制。 (为此使用显式计数器。)
对于您的问题,请使用 legacy for loop
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.