List> test=new ArrayList>();
List t1=new ArrayList();
List t2=new ArrayList();
List t3=new ArrayList();
t1.add("1");
t1.add("2");
t1.add("3");
t2.add("A");
t2.add("B");
t2.add("C");
t2.add("D");
t3.add("!");
t3.add("@");
test.add(t1);
test.add(t2);
test.add(t3);
最终想实现
1-A-!
1-A-@
1-B-!
1-B-@
1-C-!
1-C-@
1-D-!
2-A-!
2-A-!
……
该怎样实现?
要求的话可以这么描述:第一行第一个-第二行第一个-第三行第一个,第一行第一个-第二行第一个-第三行第二个,第一行第一个-第二行第二个-第三行第一个,第一行第一个-第二行第二个-第三行第二个……依此类推
多层循环,分别取就可以了
for(String x: t1) {
for(String y: t2) {
for(String z: t3) {
String m = x + "-" + y + "-" + z;
System.out.println(m);
}
}
}
嵌套循环,拼接字符串
参考,大概实现了.
List<List<String>> test=new ArrayList<>();
List<String> t1=new ArrayList<>();
List<String> t2=new ArrayList<>();
List<String> t3=new ArrayList<>();
t1.add("1");
t1.add("2");
t1.add("3");
t2.add("A");
t2.add("B");
t2.add("C");
t2.add("D");
t3.add("!");
t3.add("@");
test.add(t1);
test.add(t2);
test.add(t3);
// Java 7 .
for(int x=0;x<t1.size();x++){
for(int y=0;y<t2.size();y++){
for(int z=0;z<t3.size();z++){
System.out.println(t1.get(x)+"-"+t2.get(y)+"-"+t3.get(z));
}
}
}
System.out.println("-------------------");
// Java 8 及之后版本.
t1.forEach(x->{
t2.forEach(y->{
t3.forEach(z->{
System.out.println(x+"-"+y+"-"+z);
});
});
});
更新了一个Java8的版本:
List<String> t1 = new ArrayList<>();
List<String> t2 = new ArrayList<>();
List<String> t3 = new ArrayList<>();
t1.add("1");
t1.add("2");
t1.add("3");
t2.add("A");
t2.add("B");
t2.add("C");
t2.add("D");
t3.add("!");
t3.add("@");
/**
* 下面的:a1+"-"+a2+"-"+a3+"\n"
* 会影响速度,因为String是不可变的对象,
* 因此+了几次就新建了几次.
*
*/
String info = t1.stream().
// 组合t1,t2,t3
flatMap(a1 -> t2.stream().flatMap(a2 -> t3.stream().map(a3 -> a1+"-"+a2+"-"+a3+"\n")))
// 连接成一个String
.collect(Collectors.joining());
System.out.println(info);