有一个外层list1,这个list1里面有未知个list,而每一个list里面的元素个数有也是未知的,怎么算出各种可能性
例子:比如说3个内层list(list1,list2,list3)
list1(1,2)//内层的元素不一定是2个
list2(3,4)
list4(5,6)
算出来的可能性有6种(2*2*2),分别为135,136,145,146,235,236,245,246
例子:
List list=new ArrayList();
List<String> list1=new ArrayList<String>();
List<String> list2=new ArrayList<String>();
List<String> list3=new ArrayList<String>();
list1.add("1");
list1.add("2");
list1.add("3"); list2.add("4");
list2.add("5"); list3.add("6");
list3.add("7");
list3.add("8"); list.add(list1);
list.add(list2);
list.add(list3);
输出 146,147,148,156,157,158,246,247,248,256,257,258,346,347,348,356,357,358
例子:比如说3个内层list(list1,list2,list3)
list1(1,2)//内层的元素不一定是2个
list2(3,4)
list4(5,6)
算出来的可能性有6种(2*2*2),分别为135,136,145,146,235,236,245,246
例子:
List list=new ArrayList();
List<String> list1=new ArrayList<String>();
List<String> list2=new ArrayList<String>();
List<String> list3=new ArrayList<String>();
list1.add("1");
list1.add("2");
list1.add("3"); list2.add("4");
list2.add("5"); list3.add("6");
list3.add("7");
list3.add("8"); list.add(list1);
list.add(list2);
list.add(list3);
输出 146,147,148,156,157,158,246,247,248,256,257,258,346,347,348,356,357,358
public void loop(ArrayList<Object> list){
for(int i=0;i<list.length();i++){
if(list[i] instanceof Arraylist){
loop(list[i])
}
else{
System.out.println(list[i])
}
}
}
if (i < max) {
for(int y=0;y<list.get(i).size();y++){
zf[i]=list.get(i).get(y);//获取每一层的元素的值
outlist(list,i+1,max,x,zf,results);//递归创建for循环
if(i==(max-1)){//最后一层循环
for (String s : zf) {
x+=s;
}
//System.out.println(x);
results.add(x);
x="";
}
}
}
//return x;
}
如果可能有n层结构,就必须用递归。递归的临界条件要对本层list进行遍历,并对其元素进行instanceof检查,直到其类型不是List时,认为找到最后一层,输出结果。