具有两个数组的Java foreach循环

新手上路,请多包涵

我有一个简单的问题,是否可以在 Java 上完成类似以下的操作?

 ArrayList<String> arr1 = new ArrayList<String>();
ArrayList<String> arr2 = new ArrayList<String>();

// Processing arrays, filling them with data

for(String str : arr1, arr2) {
    //Do stuff
}

目的是遍历第一个数组然后遍历下一个数组。

我能想到的最好的方法是使用单独的 for 循环,当 for 循环具有相同的内部代码时,这会产生冗余编码。

另一种解决方案是创建一个 ArrayList 数组。这很容易实现我的意图,即:

 ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>>();

// Initialising arr and populating with data
for(ArrayList<String> tempArr : arr) {
    for(String str : tempArr) {
        //Do stuff
    }
}

但这会导致代码不可读。有没有一种干净的方法可以在不丢失单独数组名称的情况下执行后者?

提前致谢, 德克兰

原文由 Declan McLeman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
2 个回答

不可能,至少在 Java 9 以下是不可能的。这是一种可能的方法

i1= arr1.iterator();
i2= arr2.iterator();
while(i1.hasNext() && i2.hasNext())
{

   ToDo1(i1.next());
   ToDo2(i2.next());
}

原文由 Suresh Atta 发布,翻译遵循 CC BY-SA 4.0 许可协议

解决方法是使用 Streams

  Stream.concat(arr1.stream(),arr2.stream()).forEachOrdered(str -> {
   // for loop body
 });

原文由 Sleiman Jneidi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题