62,623
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class Test {
/**
* 递归选择各个列表中的元素,放到新的列表中;都选择完后进行输出
* @param arrs N个列表组成的数组
* @param list 新列表,存放输出结果
* @param i 固定选择第一个元素的那个列表索引
* @param cur 本次递归要从哪个列表中选择元素
*/
public static void printNewArrays(ArrayList<Character>[] arrs,
ArrayList<Character> list, int i, int cur) {
if(cur==i) cur++;
if(cur<arrs.length) {
ArrayList<Character> curList=arrs[cur];
int size = curList.size();
for(int j=0; j<size; ++j) {
list.set(cur, curList.get(j));
printNewArrays(arrs, list, i, cur+1);
}
} else {
System.out.println(list);
}
}
/**
* 从列表数组中选择元素,放到新数组,并打印新列表
* @param arrs 列表数组
* @param i 哪个列表只选择固定元素
*/
public static void getNewArrays(ArrayList<Character>[] arrs, int i) {
ArrayList<Character> list=new ArrayList<Character>(arrs.length);
for(int k=0; k<arrs.length; ++k) list.add('*');
if(i>=0 && i<arrs.length) {
list.set(i, arrs[i].get(0));
printNewArrays(arrs, list, i, 0);
}
}
/** 初始化这段挺烦人的,这么写看着就难受... */
public static void arrsTest() {
final int ARRAY_COUNT = 3;
ArrayList<Character>[] arrs = new ArrayList[ARRAY_COUNT];
arrs[0]=new ArrayList<Character>(2);
arrs[1]=new ArrayList<Character>(2);
arrs[2]=new ArrayList<Character>(2);
arrs[0].addAll(Arrays.asList('a','b'));
arrs[1].addAll(Arrays.asList('c','d'));
arrs[2].addAll(Arrays.asList('e','f'));
getNewArrays(arrs, 1);
}
public static void main(String[] args) {
arrsTest();
}
}