【Java 开发实例】Java8 实现 笛卡尔积 示例

353 阅读1分钟

废话不多说系列,直接开搞 ~ 美女6.png

  • 笛卡尔积:笛卡尔乘积是指在数学中,两个集合XY的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

(1)核心代码展示

     public static void main(String[] args) {
        List<String> colorList = Arrays.asList("红色", "黑色", "金色");
        List<String> sizeList = Arrays.asList("5", "5");
        List<String> placeList = Arrays.asList("18", "19");

        List<String> descartesList = genDescartes(colorList, sizeList, placeList);
        System.out.println(descartesList);
    }

	/**
     * 得到笛卡尔积
     *
     * @param lists 多个数组
     * @return 笛卡尔积
     */
    private List<String> genDescartes(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;
    }

(2)测试结果实例

image.png


至此,感谢阅读🙏!

美女6.png