原
java 8 Lambda实现两个list的笛卡尔积
一:代码如下。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 colorList = Arrays.asList("张三", "李四", "王五");
List sizeList = Arrays.asList("25岁", "40岁");
List descartesList = descartes(colorList, sizeList);
descartesList.forEach(System.out::println);
}
public static List descartes(List... lists) {
List tempList = new ArrayList<>();
for (List list : lists) {
if (tempList.isEmpty()) {
tempList = list;
} else {
tempList = tempList.stream().flatMap(item -> list.stream().map(item2 -> item + " " + item2)).collect(Collectors.toList());
}
}
return tempList;
}
}
执行结果:张三 25岁
张三 40岁
李四 25岁
李四 40岁
王五 25岁
王五 40岁