java 多个集合 每个集合取其中一个,进行排列

2018-07-04  本文已影响0人  南塘的唐

工作中遇到一个拆分的算法问题。要把几个数组或者集合,组合起来。每个集合或数组只取一个。想了老半天没有想到,问几个人都说很简单吗,他们都举了一个例子,然后进行遍历。当我说我想要个通用方法的时候,都卡住了,需要花一点时间去想了。

代码:

public classTest {

List>listTo=newArrayList>();

publicList>  getList1( List> lists){

for(inti =0; i < lists.get(0).size() ; i++){

ArrayList st1 =newArrayList();

st1.add(lists.get(0).get(i));

if(lists.size() ==2){

for(intj =0; j < lists.get(1).size() ; j++){

ArrayList st2 =newArrayList();

st2 = (ArrayList)st1.clone();

String s = lists.get(lists.size() -1).get(j);

st2.add(s);

listTo.add(st2);

}

}else{

listTo=this.tm1(lists,1, st1);

}

}

returnlistTo;

}

publicList>  tm1(List> lists ,intj,ArrayList st){

for(inti =0; i < lists.get(j).size() ; i++){

ArrayList st1 =newArrayList();

st1 = (ArrayList)st.clone();

st1.add(lists.get(j).get(i));

if(j ==  lists.size() -2){

for(intt =0; t < lists.get(lists.size() -1).size() ; t++){

ArrayList st2 =newArrayList();

st2 = (ArrayList)st1.clone();

String s = lists.get(lists.size() -1).get(t);

st2.add(s);

listTo.add(st2);

}

}else{

this.tm1(lists,j+1,st1);

}

}

returnlistTo;

}

public static  voidmain(String[] args){

List strings1 =newArrayList();

List strings2 =newArrayList();

List strings3 =newArrayList();

List strings4 =newArrayList();

strings1.add("1");

strings1.add("3");

strings2.add("1");

strings2.add("2");

strings3.add("1");

strings3.add("2");

strings3.add("3");

List> lists =newArrayList>();

lists.add(strings1);

lists.add(strings2);

lists.add(strings3);

Test test =newTest();

List> list1 = test.getList1(lists);

intj =0;

for(List l : list1){

System.out.println(l.get(0) +"-"+ l.get(1) +"-"+ l.get(2) +"********"+ j);

j++;

}

}

}

上一篇下一篇

猜你喜欢

热点阅读