首页 > 解决方案 > 如何使用java流创建集合的自联接笛卡尔积

问题描述

我有一组字符串,例如:

Set<String> set = new HashSet<>(Arrays.asList("A", "B", "C"));

我需要如果一个新的集合本身有笛卡尔

IE["AA", "AB", "AC","BA", "BB", "BC","CA", "CB", "CC"]

如何使用 Java 流 API 做到这一点?

标签: javajava-stream

解决方案


执行以下代码:

Set<String> set = new HashSet<>(Arrays.asList("A", "B", "C"));

Set<String> cartesianSet = set
            .stream()
            .map(x-> set
                    .stream()
                    .map(y-> x+y)
                    .collect(Collectors.toSet()))
            .flatMap(Collection::stream)
            .collect(Collectors.toSet());
        System.out.println(cartesianSet);//[AA, BB, CC, AB, BC, AC, CA, BA, CB]

推荐阅读