java编程n个集合每次从每个集合里面取出一个元素组成一个字符串列出所有组合算法

java编程n个集合每次从每个集合里面取出一个元素组成一个字符串列出所有组合算法
a={1,2,3,4}
b={a,b,c,d}
c={A,B,G,H}
每次这三个集合里出一个组成一个新的数字,例如:1,a,A
有没有什么算法可以列出所有的组合方式

import java.util.ArrayList;
import java.util.List;

public class XX {

 
    public static void main(String[] args)  
    {  
        String[] arr1 = { "1", "2","3","4"};  
        String[] arr2 = { "a", "b","c","d" };  
        String[] arr3 = { "A","B","G","H" };  
        List<String[]> list = new ArrayList<String[]>();  
        list.add(arr1);  
        list.add(arr2);  
        list.add(arr3);  
        test(list, arr1, "");  
    }  
  
    public static void test(List<String[]> list, String[] arr, String str)  
    {  
        for (int i = 0; i < list.size(); i++)  
        {  
            //取得当前的数组  
            if (i == list.indexOf(arr))  
            {  
                //迭代数组  
                for (String st : arr)  
                {  
                    st = str + st;  
                    if (i < list.size() - 1)  
                    {  
                        test(list, list.get(i + 1), st);  
                    }  
                    else if (i == list.size() - 1)  
                    {  
                        System.out.println(st);  
                    }  
                }  
            }  
        }  
    }  
}

计算结果:

1aA

1aB

1aG

1aH

1bA

1bB

1bG

1bH

1cA

1cB

1cG

1cH

1dA

1dB

1dG

1dH

2aA

2aB

2aG

2aH

2bA

2bB

2bG

2bH

2cA

2cB

2cG

2cH

2dA

2dB

2dG

2dH

3aA

3aB

3aG

3aH

3bA

3bB

3bG

3bH

3cA

3cB

3cG

3cH

3dA

3dB

3dG

3dH

4aA

4aB

4aG

4aH

4bA

4bB

4bG

4bH

4cA

4cB

4cG

4cH

4dA

4dB

4dG

4dH

追问

我只是简单举个例子,写了3个集合,如果有n个集合是无法这么做的,谢谢你的答案

追答

arr1 arr2 arr2 也只是举例,下面的程序是用到了递归,你放多少个集合都没问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-15
多重循环遍历?
相似回答