5

例如

for(String str : list1) {
...
}

for(String str : list2) {
...
}

假设我们确定list1.size()equals list2.size(),如何在一个for语句中遍历这两个列表?

也许像for(String str1 : list1, str2 : list2)什么?

4

7 回答 7

18

您可以使用迭代器

Iterator<String> it1 = list1.iterator();
Iterator<String> it2 = list2.iterator();
while(it1.hasNext() && it2.hasNext()) { .. }

或者:

for(Iterator<String> it1 = ... it2..; it1.hasNext() && it2.hasNext();) {...} 
于 2013-04-22T19:01:54.833 回答
7
for(int i = 0; i< list1.size(); i++){
  String str1 = list1.get(i);
  String str2 = list2.get(i);
  //do stuff
}
于 2013-04-22T19:01:16.503 回答
2

for增强的循环不能同时遍历两个列表;您必须使用传统for循环遍历它:

for (int i = 0; i < list1.size(); i++)
{
    String str1 = list1.get(i);
    String str2 = list2.get(i);
    ...
}
于 2013-04-22T19:00:56.853 回答
1

使用基本循环

for(int index=0; index < list1.size() ; index++){
  list1.get(index);
  list2.get(index);
}
于 2013-04-22T19:00:49.540 回答
1

如果有人感兴趣,即使它们的大小不同,这也是将完全遍历两个列表的解决方案。

int max = Math.max(list1.size(), list2.size());
for(int i=0; i<max; ++i){
    if(list1.size()<i){
        list1.get(i);
    }
    if(list2.size()<i){
        list2.get(i);
    }
}
于 2013-04-28T18:58:56.493 回答
0

正如您所说,两个列表的大小相同,那么您可以使用“for”循环而不是“for-each”循环。您可以使用 list 的 get(int index) 方法在每次迭代期间获取值。

于 2013-04-22T19:05:22.723 回答
0
int index = 0;
for(String str1 : list1) {
    str2 = list2.get(index++);
}
于 2020-10-24T14:53:25.923 回答