JAVA 根据商品属性生成(SKU)规格算法

服务端根据web端传入的属性生成规格,因为不确定web端传入的属性数据有多少,此处选用递归处理

   /**
     * 根据属性值生成sku
     *
     * @param list    属性值列表
     * @param index   下标
     * @param str     初始化数据
     * @param newObjs 新obj
     */
    public static List<String> generateSkuCombine(List<List<String>> list, int index, String str, List<String> newObjs) {
        if (index == list.size()) {
            newObjs.add(str);
            return newObjs;
        }
        for (String dataStr : list.get(index)) {
            if (StringUtils.isBlank(str)) {
                generateSkuCombine(list, index + 1, str + dataStr, newObjs);
            } else {
                generateSkuCombine(list, index + 1, str + "," + dataStr, newObjs);
            }
        }
        return newObjs;
    }


测试

    @Test
    public void clothesStyle() {
        //模拟T恤的一些属性
        List<String> color = Arrays.asList("黑色", "白色");
        List<String> style = Arrays.asList("印花", "简约");
        List<String> size = Arrays.asList("M", "L", "XXL");

        List<List<String>> resultList = new ArrayList<>();
        resultList.add(color);
        resultList.add(style);
        resultList.add(size);

        List<String> combine = generateSkuCombine(resultList, 0, "", new ArrayList<>());
        for (String sku : combine) {
            System.out.println(sku);
        }
    }

结果

黑色,印花,M
黑色,印花,L
黑色,印花,XXL
黑色,简约,M
黑色,简约,L
黑色,简约,XXL
白色,印花,M
白色,印花,L
白色,印花,XXL
白色,简约,M
白色,简约,L
白色,简约,XXL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值