商品规格递归拼接

创建实体类

复制代码
@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);
  }
 }

效果

相关推荐
TheITSea20 小时前
Java中的Optional:从入门到精通
java·开发语言
程序员侠客行20 小时前
Mybatis入门到精通 一
java·架构·mybatis
糕......20 小时前
Java异常处理完全指南:从概念到自定义异常
java·开发语言·网络·学习
小徐Chao努力20 小时前
【Langchain4j-Java AI开发】04-AI 服务核心模式
java·人工智能·python
刘宇涵4920 小时前
Javalength
java
历程里程碑20 小时前
双指针巧解LeetCode接雨水难题
java·开发语言·数据结构·c++·python·flask·排序算法
qualifying20 小时前
JAVAEE——多线程(2)
java·开发语言
ALex_zry20 小时前
C++ 中多继承与虚函数表的内存布局解析
java·开发语言·c++
益达32120 小时前
JDBC实战优化|从基础增删改查到连接池的完整演进(附性能对比)
java·intellij-idea
有一个好名字20 小时前
Spring Boot 依赖注入指南:多种方式深度剖析与代码演示
java·服务器·spring boot