当前位置: 首页 > article >正文

商品规格递归拼接

创建实体类

@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);
  }
 }

效果


http://www.kler.cn/a/397147.html

相关文章:

  • ADS学习笔记 5. 微带天线设计
  • 【大数据学习 | HBASE高级】hive操作hbase
  • Nginx 上安装 SSL 证书并启用 HTTPS 访问
  • 【Vitepress报错】Error: [vitepress] 8 dead link(s) found.
  • 密码学在网络安全中的应用
  • Oracle19C AWR报告分析之Instance Efficiency Percentages (Target 100%)
  • 【JAVA】Java基础—面向对象编程:多态—多态的概念
  • 不可变对象:并发编程的“安全岛”
  • ubuntu22 安装 minikube
  • SOC Boot学习(一)——ELF文件
  • HBase压测 ycsb
  • 建设工程监理规范 (2014年3月1日起实施)
  • 01、Spring MVC入门程序
  • 实施案例PPT | 数据湖+数据中台实施方案
  • 用go语言后端开发速查
  • Android从Drawable资源Id直接生成Bitmap,Kotlin
  • hive搭建
  • STM32传感器模块编程实践(十二) micro SD卡模块简介及驱动源码
  • [ACTF2020]Upload 1--详细解析
  • 健康之路三度冲击港交所,数字健康医疗平台IPO前景引关注
  • 【AI图像生成网站Golang】雪花算法
  • 前后端分离练习(云客项目)
  • 一文讲清楚人工智能自然语言处理中的数据预处理(数据清洗)
  • 【目标检测】用YOLOv8-Segment训练语义分割数据集(保姆级教学)
  • 34Web服务器(如Apache, Nginx)
  • SpringBoot如何集成WebSocket