记一次在开发中用到的一个算法
开发商城,商品规格的时候遇到这么个需求,新建商品,假设有一件衣服,衣服下面有不同的规格,有颜色,尺寸,品质。
颜色有:黑色、白色、蓝色、黄色
尺寸有:S、M、L、XL
品质有:纯棉、涤纶
不同规格下面需要设置不同的库存,价格,或者一些别的什么东西:
大概就是这样:
颜色 | 尺寸 | 品质 |
---|---|---|
黑色 | 白色 | 蓝色 |
S | M | L |
纯棉 | 羽绒 |
它的组合一共有 3 * 3 * 2=18种…
写一个算法得出这样的组合:
(黑色,S,纯棉)
(黑色,S,羽绒)
(黑色,M,纯棉)
…
不说了直接上代码:
public class Test {
public static void main(String[] args) {
String[] arr1 = {"黑色", "白色","蓝色"};
String[] arr2 = {"S", "M","L"};
String[] arr3 = {"纯棉", "羽绒"};
List<List<String>> list = new ArrayList<>();
list.add(Arrays.asList(arr1));
list.add(Arrays.asList(arr2));
list.add(Arrays.asList(arr3));
test(list, Arrays.asList(arr1), "");
}
public static void test(List<List<String>> list, List<String> arr, String str) {
for (int i = 0; i < list.size(); i++) {
//取得当前的数组
if (i == list.indexOf(arr)) {
//迭代数组
for (String st : arr) {
st = str + st+",";
if (i < list.size() - 1) {
test(list, list.get(i + 1), st);
} else if (i == list.size() - 1) {
System.out.println(st);
}
}
}
}
}
}
运行结果: