求助!Java list中行列变换的问题

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);