我有一个简单的问题,可以在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
答案 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.of
和flatMap
将多个集合链接在一起,并按顺序迭代,然后传递给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
}
}