具有两个数组的Java foreach循环
我有一个简单的问题,可以在Java上执行以下操作吗具有两个数组的Java foreach循环,java,arrays,loops,arraylist,foreach,Java,Arrays,Loops,Arraylist,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 } Arra
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
}
ArrayList arr1=new ArrayList();
ArrayList arr2=新的ArrayList();
//处理数组,用数据填充它们
用于(字符串str:arr1、arr2){
//做事
}
其中,目的是遍历第一个数组,然后遍历下一个数组
我能想到的最好方法是使用单独的for循环,当for循环具有相同的内部代码时,这会导致冗余编码
另一个解决方案是创建一个数组列表。这使我很容易实现我的意图,即:
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
}
}
ArrayList arr=new ArrayList();
//初始化arr并填充数据
for(ArrayList tempArr:arr){
for(字符串str:tempArr){
//做事
}
}
但这会导致代码不可读。有没有一种干净的方法可以在不丢失单独数组名称的情况下执行后一种操作
提前感谢,Declan不可能,至少在Java 9以下的版本中是这样。这里有一个可能的方法
i1= arr1.iterator();
i2= arr2.iterator();
while(i1.hasNext() && i2.hasNext())
{
ToDo1(i1.next());
ToDo2(i2.next());
}
不可能,请尝试以下代码
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
}
}
List arr1=new ArrayList();
List arr2==new ArrayList();
List arrList=new ArrayList();
arrList.add(arr1);
arrList.add(arr2);
for(ArrayList strlist:arrList){
for(字符串s:strlist){
//进程阵列
}
}
解决方法是使用流
Stream.concat(arr1.stream(),arr2.stream()).forEachOrdered(str -> {
// for loop body
});
您可以使用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