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> permutation(List> arrays) {

final List> initSource = new LinkedList<>();

arrays.get(0).forEach(a -> initSource.add(Collections.singletonList(a)));

List> source = initSource;

if (arrays.size() <= 1) {

return source;

}

for (int i = 1; i < arrays.size(); i++) {

List sentinel = arrays.get(i);

List> tempSource = new LinkedList<>();

for (String s : sentinel) {

for (List row : source) {

List 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 list1 = new LinkedList<>();

list1.add("红");

list1.add("蓝");

list1.add("黄");

List list2 = new LinkedList<>();

list2.add("大号");

list2.add("中号");

list2.add("小号");

List list3 = new LinkedList<>();

list3.add("套餐一");

list3.add("套餐二");

List> t1 = new ArrayList<>();

t1.add(list1);

List> t2 = new ArrayList<>();

t2.add(list1);

t2.add(list2);

List> 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)));

}

}

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐