繁体   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