簡體   English   中英

我可以在 Java 中一次迭代兩個數組嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM