[英]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.