private static void recursive (List<ProductSpecDetail> specDetailList, List<String> result, int layer, StringBuilder curList) {
List<List<String>> dimValue = new ArrayList<>();
for (ProductSpecDetail detail : specDetailList) {
Set<ProductSpecDetailValue> values = detail.getValues();
List<String> di = new ArrayList<>();
for (ProductSpecDetailValue value : values) {
StringBuilder sb1 = new StringBuilder();
sb1.append(value.getSpecId()).append(":").append(value.getSpecValueId());
di.add(sb1.toString());
}
dimValue.add(di);
}
if (layer < dimValue.size() - 1) {
if (dimValue.get(layer).size() == 0) {
recursive(specDetailList, result, layer + 1, curList);
} else {
for (int i = 0; i < dimValue.get(layer).size(); i++) {
StringBuilder list = curList;
list = new StringBuilder().append(list).append(";").append(dimValue.get(layer).get(i));
recursive(specDetailList, result, layer + 1, list);
}
}
} else if (layer == dimValue.size() - 1) {
if (dimValue.get(layer).size() == 0) {
result.add(curList.toString());
} else {
for (int i = 0; i < dimValue.get(layer).size(); i++) {
StringBuilder list = curList;
list = new StringBuilder().append(list).append(";").append(dimValue.get(layer).get(i));
list.deleteCharAt(0);
result.add(list.toString());
}
}
}
}
笛卡儿积运算
最新推荐文章于 2020-09-23 17:29:03 发布
本文深入探讨了一种基于递归的组合算法,该算法用于处理产品规格细节的列表,通过递归方式生成所有可能的组合结果。算法首先将每个产品规格的值转换为字符串形式,然后逐层递归,确保在每一层上都与前一层的组合进行连接,最终形成完整的组合列表。
3432

被折叠的 条评论
为什么被折叠?



