借鉴java 开发之商品规格属性(SKU)组合算法_Runt02的博客-CSDN博客_java 商品属性

 public List<LinkedHashMap<String, String>>  specesPlanNumeration(LinkedList<LinkedHashMap<String, String[]>> namelist){//创建存放有序map集合List<LinkedHashMap<String, String>> mapList=new LinkedList<>();//判断传入参数是否为空if( namelist.size()==0){return mapList;}//1.便利传入参数namelist.get(0);LinkedHashMap<String, String[]> stringLinkedHashMap = namelist.get(0);stringLinkedHashMap.forEach((key,value)->{for (String s : value) {LinkedHashMap<String, String>mapo = new LinkedHashMap<>(16, 0.75f, true);mapo.put(key,s);//创建有序mapLinkedHashMap<String, String>map = new LinkedHashMap<>(16, 0.75f, true);//创建下级集合LinkedList<LinkedHashMap<String, String[]>> lists=new LinkedList<>();//除去下标0的数据,其他存入下级集合for (int i1 = 1; i1 < namelist.size(); i1++) {lists.add(namelist.get(i1));}addxxx(mapList, map,mapo,lists);}});return mapList;}

此处用LinkedMap,我是为了防止map的无须造成重复插入,后来一看想多了。但还是用在这里了。

   private void addxxx(List<LinkedHashMap<String, String>> mapList, LinkedHashMap<String, String> map,  LinkedHashMap<String, String> mapo, LinkedList<LinkedHashMap<String, String[]>> lists) {if(lists.size() == 0 || lists.get(0).size() == 0){map.putAll(mapo);mapList.add(map);}else{map.putAll(mapo);LinkedHashMap<String, String[]> stringLinkedHashMap = lists.get(0);stringLinkedHashMap.forEach((key,value)->{for (String s : value) {LinkedHashMap<String, String>mapx = new LinkedHashMap<>(16, 0.75f, true);mapx.put(key,s);LinkedList<LinkedHashMap<String, String[]>> listx=new LinkedList<>();for (int i = 1; i < lists.size(); i++) {listx.add(lists.get(i));}LinkedHashMap<String, String> mapobj=new LinkedHashMap<>();mapobj.putAll(map);addxxx(mapList,mapobj,mapx,listx);}});}}

测试代码:数据库中商品规格我存的是JSON类型的字段,映射到DAO是String

 /*** 商品规格拆分测试* @param args*/public static void main(String[] args) {String attributeList = "[{\"id\":\"4152cfe0-6ecd-11ec-b8b3-853d52bc4840\",\"name\":\"kkk\",\"item\":[\"1\",\"2\",\"3\"],\"input\":false,\"attr\":\"3\"},{\"id\":\"46fba250-6ecd-11ec-b8b3-853d52bc4840\",\"name\":\"vvv\",\"item\":[\"a\",\"b\",\"c\"],\"input\":false,\"attr\":\"c\"}]";JSONArray jsonArray = JSONArray.parseArray(attributeList);LinkedList<LinkedHashMap<String, String[]>> namelist = new LinkedList<>();LinkedList<List<String>> sd = new LinkedList<>();for (int i = 0; i < jsonArray.size(); i++) {JSONObject object = jsonArray.getJSONObject(i);LinkedHashMap<String, String[]> cc = new LinkedHashMap<>(16, 0.75f, true);String name = (String) object.get("name");String item = object.get("item").toString();String[] strings = toArray(item);List<String> templatesList = JSON.parseArray(item, String.class);sd.add(templatesList);cc.put(name, strings);namelist.add(cc);}List<LinkedHashMap<String, String>> linkedHashMaps = new SpecAlgorithm<String>().specesPlanNumeration(namelist);for (LinkedHashMap<String, String> linkedHashMap : linkedHashMaps) {AtomicInteger a= new AtomicInteger(1);linkedHashMap.forEach((key,value)->{System.out.println(a.getAndIncrement()+1);System.out.println(key+"---------"+value);});}}

运行得出9种组合:现在为MAP 转换成json即可
kkk---------1
vvv---------a
kkk---------1
vvv---------b
kkk---------1
vvv---------c

---------------------------
kkk---------2
vvv---------a
kkk---------2
vvv---------b
kkk---------2
vvv---------c

----------------------------
kkk---------3
vvv---------a
kkk---------3
vvv---------b
kkk---------3
vvv---------c

感谢上文链接的老哥文章帮助

写的不好,希望其中某处也能帮助到各位屁股

商品规格属性(SKU)组合算法相关推荐

  1. java 开发之商品规格属性(SKU)组合算法

    java 开发之商品规格属性(SKU)组合算法 开发背景 一般在开发商城的时候都会遇到商品规格组合的问题, 在这个开发过程中就需要一套算法用来组合多个规格属性,用来给每个组合定一组封面图和价格 比如某 ...

  2. sku排列算法实现商品规格属性组合

    背景 前两年做过一个电商系统的新建商品模块,记忆中比较有难点的是在新增商品的sku规格时,需要把每个规格名称下的规格属性一一组合起来.因此在这里稍微的写个小demo记录下这种规格属性组合的思路

  3. 仿淘宝京东商品规格属性选择的最简单实现

    仿淘宝京东商品规格属性选择的最简单实现 商城里面的规格选择,网上大部分是自定义控件实现的,显得很是麻烦,而我的实现方式是大家最常用的控件RecyclerView,特点是性能好,简单.废话不多说,先看实 ...

  4. 商品sku算法php,笛卡尔乘积-电商网站商品sku组合算法应用

    笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员. 利用笛卡尔乘积 ...

  5. 关于商品规格(SKU)的设置

    2019独角兽企业重金招聘Python工程师标准>>> SKU定义和正确发布 SKU=stock keeping unit(库存量单位),SKU即库存进出计量的单位, 可以是以件.盒 ...

  6. mysql商品规格设计_关于商品规格(SKU)的设置

    SKU定义和正确发布 SKU=stock keeping unit(库存量单位),SKU即库存进出计量的单位, 可以是以件.盒.托盘等为单位.在服装.鞋类商品中使用最多最普遍. 例如纺织品中一个SKU ...

  7. 基于Vue实现电商SKU组合算法问题

    这个相对来说比较麻烦,还涉及到了下面"属性图片"的循环,但关键点还是在SKU组合的代码上面 以下是基于element-ui和vue的精简版demo代码: html <div& ...

  8. 基于Vue的淘宝SKU组合算法

    现有需求,当点击颜色时进行校验,若蓝色6.0寸无库存时禁选. 先上效果截图: 当前规格组合中 蓝色6寸 和 黑色中6寸 的库存均为0.后台返回数据如下图:实现思路: 例如:当选择蓝色时,进行循环遍历组 ...

  9. iOS SKU规格组合算法

    写在前面 本篇文章主要是讲 SKU 商品规格组合的 问题.解决思路及算法优化. 最后 将提供一个SKU算法的通配方案 - SKUDataFilter 本篇文章分析较为详细,针对于对SKU问题不甚了解的 ...

最新文章

  1. MyBatis传入多个参数的问题 - mingyue1818
  2. HID接口设备-固件要求
  3. linux i18n修改,中文版英文版体现
  4. 昆明大专学计算机,昆明冶金高等专科学校2020年云南省高等教育招收中等职业学校学生 (计算机类)考试大纲...
  5. python从csv读取数据到网页输入框_python中怎么把csv文件读取的数据显示在网页上...
  6. 完全卸载mysql数据库图文教程
  7. 计算机bq,BQ24721部分翻译
  8. ipconfig没有显示ip_TCP/IP 协议修复网络问题
  9. IDEA 这个小技巧太实用了。。
  10. 产品经理面试技巧及常见问题
  11. icon 做成html形式,CSS icon的各种做法
  12. MySQL讲义第 48 讲——select 查询之查询练习(六)
  13. thinkAdmin 微信公众号授权
  14. jdbc操作数据库实现查询产品、增加产品库存量例子
  15. 蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践读后感
  16. ls -al 命令详解
  17. 汽车电子行业的“AUTOSAR”到底是什么?
  18. cefsharp项目开发浏览器运行一段时间后cefsharp.browsersubprocess崩溃问题
  19. llinux服务器7277端口未开启,造成was控制台中node agent远程节点显示停用状态
  20. PHP折扣,php 团购折扣计算公式

热门文章

  1. 目前四种swift代码格式化工具
  2. 基于matlab的逻辑回归示例
  3. 如何带好一个20人团队?
  4. 关于选择性起始位点的新方法之SEASTAR: systematic evaluation of alternative transcription start sites in RNA...
  5. MIT Molecular Biology 笔记6 转录的调控
  6. 在INTEL KABYALAKE平台上运行COREBOOT 记录
  7. C#:Invoke 和 BeginInvoke 的真正涵义
  8. 中国大学MOOC-陈越、何钦铭-数据结构-2022春期中考试
  9. 「UG/NX」NX2212手动安装方法教程
  10. SQL 初始篇 软件开发周期 与数据库设计步骤