带有两个数组的Java foreach循环

时间:2016-04-16 10:18:35

标签: java arrays loops arraylist foreach

我有一个简单的问题,可以在Java上完成以下内容吗?

col-xs-*

意图是迭代第一个数组然后迭代下一个数组。

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

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

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
}

但这会导致无法读取的代码。有没有一种干净的方式来做后者,我不会丢失单独数组的名称?

提前致谢,Declan

4 个答案:

答案 0 :(得分:6)

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

Connection closed [Object CloseEvent]

答案 1 :(得分:2)

解决方法是使用Streams

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

答案 2 :(得分:1)

您可以使用Java 8中的Stream.offlatMap将多个集合链接在一起,并按顺序迭代,然后传递给Stream.of

Stream.of(s1, s2 ...).flatMap(s -> s)

示例:

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

arr1.add("Hello");
arr2.add("World");

Stream.of(arr1.stream(), arr2.stream()).flatMap(s -> s).forEach(s1 -> {
    System.out.println(s1);
});

上面的代码将打印

Hello
world

答案 3 :(得分:0)

不可能,请尝试以下代码

List<String> arr1=new ArrayList<String>();
List<String> arr2==new ArrayList<String>();
List<ArrayList<String>> arrList=new ArrayList<ArrayList<String>>();
arrList.add(arr1);
arrList.add(arr2);
for(ArrayList<String> strlist : arrList) {
  for(String s:strlist){
      // process array
   }
}