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

直接发代码
/**
* 商品规格组合算法
*/
public class SpecAlgorithm<T>{
/**
* 商品规格组合 T 泛型不限对象类型,可以是基本数据类型,也可以是String 或自定义类
*
* @param lists 设置的规格(传入的参数数量应对的是多少级的规格,T为声明的规格对象)
* @return 返回的组合集合 数量公式 AxBxC...=N;
*/
public List<List<T>> specesPlan(List<T>...lists){
Log.i("algorit",lists.toString());
List<List<T>> arrays = new ArrayList<>();
if(lists.length == 0 ){
return arrays;
}
for(T object :lists[0]){
List<T> newObj = new ArrayList<>();
List<List<T>> arrayList = new ArrayList<>();
for(int i = 1 ; i < lists.length ; i ++){
arrayList.add(lists[i]);
}
addPlan(arrays,newObj,object,arrayList);
}
return arrays;
}
/**
*
* @param arrs 要返回的集合
* @param newObjs 规划表
* @param object 上一级的对象
* @param lists 下级的集合
*/
private void addPlan(List<List<T>> arrs, List<T> newObjs, T object, List<List<T>> lists){
if(lists.size() == 0 || lists.get(0).size() == 0){
newObjs.add(object);
arrs.add(newObjs);
}else {
newObjs.add(object);
for(T obj :lists.get(0)){
List<List<T>> arrays = new ArrayList<>();
for(int i = 1 ; i < lists.size() ; i ++){
arrays.add(lists.get(i));
}
ArrayList<T> objects = new ArrayList<>();
objects.addAll(newObjs);
addPlan(arrs, objects,obj,arrays);
}
}
}
}
使用方式
//简单用String类型 来进行组合。 根据需求可以使用自定义类
String[] style = {"简朴","风采"};//风格
String[] color = {"黄","白","黑"};//颜色
String[] size = {"41","42","43","44"};//尺寸
// String 映射, 可根据需求使用其他类型或自定义类。不懂什么是泛型 就得先了解泛型了
List<List<String>> list = new SpecAlgorithm<String>().specesPlan(Arrays.asList(style),Arrays.asList(color),Arrays.asList(size));
for(List<String> sku : list){//遍历组合
StringBuilder sb = new StringBuilder();
for(String str: sku){//拼接组合
sb.append(str+" " );
}
System.out.println(sb.toString());
}
运行结果

到此 功能就写完了,该算法灵活度高,不论你用什么类型数据作为sku组合 都可不用做任何修改的情况下直接调用。
也可以加QQ群交流技术
最后推荐一个我自己写的MVVM开源项目《Open MVVM》
(想加扣扣讨论群请进入文章结尾查看群号)
有问题请私信,留言,或者发送邮件到我扣扣邮箱 qingingrunt2010

这篇博客介绍了如何在Java开发中实现商品规格属性(SKU)的组合算法,以解决商城商品多级规格组合问题。提供了泛型方法,适用于不同类型的数据,并给出了一段使用String类型的示例代码,展示了如何生成商品的规格组合。该算法具有高度灵活性,可用于各种类型的SKU组合。此外,博主还推荐了一个MVVM开源项目《OpenMVVM》供读者参考。
组合算法&spm=1001.2101.3001.5002&articleId=119216498&d=1&t=3&u=f2ad69b599254d348ef476025010724b)
658

被折叠的 条评论
为什么被折叠?



