public class 笛卡尔积生成SKU {
private static String[] aa={"a1","a2"};
private static String[] bb={"b1"};
private static String[] cc={"c1","c2","c3"};
private static String[] dd={"d1","d2"};
private static String[][] xyz={aa,bb,cc,dd};
private static int counterIndex =xyz.length-1;
private static int[] counter={0,0,0,0};
public static void main(String[] args) {
int myLength=aa.length*bb.length*cc.length*dd.length;
for (int i=0;i<myLength;i++){
System.out.print(aa[counter[0]]);
System.out.print("\t");
System.out.print(bb[counter[1]]);
System.out.print("\t");
System.out.print(cc[counter[2]]);
System.out.print("\t");
System.out.print(dd[counter[3]]);
System.out.println();
handle();
}
}
public static void handle(){
counter[counterIndex]++;
if (counter[counterIndex]>=xyz[counterIndex].length){
counter[counterIndex]=0;
counterIndex--;
if (counterIndex>=0){
handle();
}
counterIndex=xyz.length-1;
}
}
}
结果:
a1 b1 c1 d1
a1 b1 c1 d2
a1 b1 c2 d1
a1 b1 c2 d2
a1 b1 c3 d1
a1 b1 c3 d2
a2 b1 c1 d1
a2 b1 c1 d2
a2 b1 c2 d1
a2 b1 c2 d2
a2 b1 c3 d1
a2 b1 c3 d2