商品规格递归拼接

创建实体类

复制代码
@Data
public class Shopping {

    private String name;

    private List<String> children;
}

测试

复制代码
 public static void main(String[] args) {

  ArrayList<Shopping> shoppings = new ArrayList<>();

  Shopping shopping = new Shopping();
  shopping.setName("内存");
  ArrayList<String> strings = new ArrayList<>();
  strings.add("12G");
  strings.add("16G");
  shopping.setChildren(strings);

  Shopping shopping1 = new Shopping();
  shopping1.setName("存储");
  ArrayList<String> strings1 = new ArrayList<>();
  strings1.add("256G");
  strings1.add("512G");
  shopping1.setChildren(strings1);

  Shopping shopping2 = new Shopping();
  shopping2.setName("颜色");
  ArrayList<String> strings2 = new ArrayList<>();
  strings2.add("黑色");
  strings2.add("白色");
  shopping2.setChildren(strings2);

  shoppings.add(shopping);
  shoppings.add(shopping1);
  shoppings.add(shopping2);

  List<List<String>> combinations = generateCombinations(shoppings);
  for (List<String> combination : combinations) {
   System.out.println(combination);
  }

 }

 public static List<List<String>> generateCombinations(List<Shopping> shoppings) {
  List<List<String>> result = new ArrayList<>();
  generateCombinationsRecursive(shoppings, 0, new ArrayList<>(), result);
  return result;
 }

 private static void generateCombinationsRecursive(List<Shopping> shoppings, int index, List<String> current, List<List<String>> result) {
  if (index == shoppings.size()) {
   result.add(new ArrayList<>(current));
   return;
  }

  Shopping shopping = shoppings.get(index);
  for (String option : shopping.getChildren()) {
   current.add(shopping.getName() + ": " + option);
   generateCombinationsRecursive(shoppings, index + 1, current, result);
   current.remove(current.size() - 1);
  }
 }

效果

相关推荐
许彰午15 分钟前
# 手写一个迷你Tomcat——三步理解Servlet容器的核心原理
java·servlet·tomcat
一诺加油鸭1 小时前
若依后端系统集成 Swagger 接口文档功能
java·开发语言
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【40】多智能体核心模式 - 智能体作为工具(Agent as Tool)
java·人工智能·spring
测试员周周2 小时前
【踩坑系列3】飞书机器人集体“失联“?3 个 Gateway 进程让我差点崩溃!一个测试老兵的排查实录
java·python
aq55356002 小时前
Laravel9.x新特性全解析
java·开发语言·数据库
亦暖筑序2 小时前
AI 客服系统升级实战:多 Agent 路由 + 多轮记忆 + 敏感词过滤
java·后端
zhangzeyuaaa2 小时前
深入理解 Python GIL:从机制到释放时机
java·网络·python
河阿里2 小时前
Spring AOP:企业级实战教学
java·后端·spring
lagrahhn2 小时前
IDEA一些提效的方法
java·ide·intellij-idea
yuanpan3 小时前
Python Scrapy 入门教程:从零学会抓取和解析网页数据
java·python·scrapy