我有一张包含值的地图:
TreeMap<String, String> params = new TreeMap<>();
params.put("Has GPS – based Lat/Long", "Yes, No");
params.put("Ad Size", "320x480, 300x250");
params.put("Integration", "Direct, Indirect");
params.put("Vdo Ad Formats", "Max, Min, Med");
params.put("App/Mobile Targeting", "Mobile Web, App");
现在,我希望从值中获得所有组合:
320x480, Yes, Direct, Max, Mobile Web
320x480, Yes, Direct, Max, App
300x250, Yes, Direct, Max, APP
300x250, Yes, Indirect, Max, Mobile Web
300x250, Yes, Direct, Max, Mobile Web
300x250, No, Direct, Max, Mobile Web
etc....
解决方案尝试过,它根本不给我所有组合。
List<String> keysList = new ArrayList<>();
keysList.addAll(params.keySet());
//1. iterating the keys list
for(int i=0; i<keysList.size(); i++)
{
String x = "";
String [] values_00 = map.get(keysList.get(i)).split(",");
//2. iterating array of values
for(int a0=0; a0<values_00.length; a0++)
{
//3. Iterating the next available keys from the list
for(int j=i+1; j<keysList.size(); j++)
{
String [] values_01 = map.get(keysList.get(j)).split(",");
//4. Iterating values of next array of values of next available keys
for(int a1=0; a1<values_01.length; a1++)
{
x = values_00[a0] + " " + values_01[a1];
System.out.println(x);
}
}
}
}
最佳答案
这类问题通常通过递归程序解决。我放置了一个可运行的示例on GitHub。要了解它的作用,基本上,您希望为每个其他选项值打印每个选项值。
您将拥有一个长度等于选项数量的缓冲区,并对每个选项进行一次(递归)调用。在递归函数中
当缓冲区已满时,您将打印出结果
否则,请遍历选项中的值,然后再次调用递归函数