标题1.递归实现的一种解法
参考:
https://blog.csdn.net/weimingjue/article/details/101013282
2.lambda表达式的一种解法
参考:https://www.91mszl.com/zhangwuji/article/details/1282
package com.mszl.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Test11 {
public static void main(String[] args) {
List<String> colorList = Arrays.asList("张三", "李四", "王五");
List<String> sizeList = Arrays.asList("25岁", "40岁");
List<String> descartesList = descartes(colorList, sizeList);
descartesList.forEach(System.out::println);
}
public static List<String> descartes(List<String>... lists) {
List<String> tempList = new ArrayList<>();
for (List<String> list : lists) {
if (tempList.isEmpty()) {
tempList = list;
} else {
tempList = tempList.stream().flatMap(item -> list.stream().map(item2 -> item + " " + item2)).collect(Collectors.toList());
}
}
return tempList;
}
}
3.基于guava工具包的解法
从guava19开始支持列表间元素的笛卡尔积
使用方法:
List<List<String>> cartesianProductList = Lists.cartesianProduct(Lists.newArrayList("A", "B", "C"), Lists.newArrayList("a1", "b1", "c1"));
https://blog.csdn.net/weimingjue/article/details/101013282
https://www.91mszl.com/zhangwuji/article/details/1282