Java实现商品sku属性组合

开发中实现商品模块时,会遇到商品sku组合问题,有两种解决方案,一种由前端实现sku属性组合然后传递到后台;第二种则由后台实现,这里就来记录一下,如何使用java的for循环实现sku商品属性组合:

 public static void getSku(List<List<String>> sourceList){
        //获取sourceList集合中的第一组属性集合
        List<List<String>> targetList = Arrays.asList(sourceList.get(0));
        //从sourceList集合的第二组属性集合开始遍历
        for (int i = 1; i < sourceList.size(); i++) {
            List<String> nextList = sourceList.get(i);
            //遍历第二组属性集合与第一组属性集合组合
            //设置一个中间数组来存储属性组合后的数据
            List<List<String>> tempList = new ArrayList<>();
            for (String nextStr : nextList) {
                for (List<String> targetStrList : targetList) {
                    for (String targetStr : targetStrList) {
                        //将组合后的属性组合放入临时数组中
                        tempList.add(Arrays.asList(targetStr+","+nextStr));
                    }
                }
            }
            System.out.println("第"+i+"次,组合后,temp集合----------------");
            for (List<String> tempStr : tempList) {
                System.out.println(tempStr);
            }
            //一组属性组合后,将临时数组中的数据,赋值给targetList,供下次属性组合使用。
            targetList = tempList;
        }
        System.out.println("-------------------最终结果------------------------");
        for (List<String> str : targetList) {
            System.out.println(str);
        }
    }

    public static void main(String[] args) {
        List<List<String>> skuList = new ArrayList<>();
        //属性集合:颜色
        List<String> list1 = new ArrayList<>();
        list1.add("红");
        list1.add("黄");
        list1.add("蓝");
        //属性集合:尺码
        List<String> list2 = new ArrayList<>();
        list2.add("S");
        list2.add("M");
        list2.add("L");
        //属性集合:款式
        List<String> list3 = new ArrayList<>();
        list3.add("男");
        list3.add("女");
        skuList.add(list1);
        skuList.add(list2);
        skuList.add(list3);
        getSku(skuList);
    }

实现思路:将上次的属性组合结果存放起来,供下组属性来遍历拼接组合。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值