做商城的時(shí)候涉及到商品的多個(gè)小時(shí)屬性
比如 屬性 1 顏色 屬性值 1白色 2黑色
屬性 2 內(nèi)存 屬性值 3 32G 4 64G
這樣 獲取的笛卡爾積為 白色 32G 白色 64G 黑色 32G 黑色 64G
對(duì)應(yīng) 的數(shù)組 為 [1,3] [1,4] [2,3] [2,4]
實(shí)現(xiàn)方法為:
public class Descartes {
public static void descartes(List<List<Long>> dimvalue, List<List<Long>> result, int layer, List<Long> curList) {
if (layer < dimvalue.size() - 1) {
if (dimvalue.get(layer).size() == 0) {
descartes(dimvalue, result, layer + 1, curList);
} else {
for (int i = 0; i < dimvalue.get(layer).size(); i++) {
List<Long> list = new ArrayList<Long>(curList);
list.add(dimvalue.get(layer).get(i));
descartes(dimvalue, result, layer + 1, list);
}
}
} else if (layer == dimvalue.size() - 1) {
if (dimvalue.get(layer).size() == 0) {
result.add(curList);
} else {
for (int i = 0; i < dimvalue.get(layer).size(); i++) {
List<Long> list = new ArrayList<Long>(curList);
list.add(dimvalue.get(layer).get(i));
result.add(list);
}
}
}
}
}