Java 多数组排列组合【电商系统商品规格属性排列组合】

import com.alibaba.fastjson.JSON;
import jdk.nashorn.internal.runtime.JSONFunctions;

import java.util.*;

/**
 * @author maitian
 * @description
 * @date 2020/06/05 11:51
 */
public class Permutation {

    public static List<List<String>> permutation(List<List<String>> arrays) {

        final List<List<String>> initSource = new LinkedList<>();
        arrays.get(0).forEach(a -> initSource.add(Collections.singletonList(a)));

        List<List<String>> source = initSource;

        if (arrays.size() <= 1) {
            return source;
        }

        for (int i = 1; i < arrays.size(); i++) {
            List<String> sentinel = arrays.get(i);
            List<List<String>> tempSource = new LinkedList<>();
            for (String s : sentinel) {

                for (List<String> row : source) {

                    List<String> cp = new ArrayList<>(row.size());
                    row.forEach(a -> cp.add(""));

                    Collections.copy(cp, row);
                    cp.add(s);

                    tempSource.add(cp);
                }

            }
            source = tempSource;
        }

        return source;
    }

    public static void main(String[] args) {

        List<String> list1 = new LinkedList<>();
        list1.add("红");
        list1.add("蓝");
        list1.add("黄");

        List<String> list2 = new LinkedList<>();
        list2.add("大号");
        list2.add("中号");
        list2.add("小号");

        List<String> list3 = new LinkedList<>();
        list3.add("套餐一");
        list3.add("套餐二");

        List<List<String>> t1 = new ArrayList<>();
        t1.add(list1);

        List<List<String>> t2 = new ArrayList<>();
        t2.add(list1);
        t2.add(list2);

        List<List<String>> t3 = new ArrayList<>();
        t3.add(list1);
        t3.add(list2);
        t3.add(list3);

        System.out.println(JSON.toJSONString(permutation(t1)));
        System.out.println(JSON.toJSONString(permutation(t2)));
        System.out.println(JSON.toJSONString(permutation(t3)));

    }


}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。