如何使用Java 8流创建笛卡尔积?

18 浏览
0 Comments

如何使用Java 8流创建笛卡尔积?

我有以下的集合类型:

Map> map;

我想要为每个键中的集合中的单个值创建map.size()个唯一组合。

例如,假设地图如下所示:

A, {a1, a2, a3, ..., an}
B, {b1, b2, b3, ..., bn}
C, {c1, c2, c3, ..., cn}

我想要得到的结果是一个List>,类似于以下形式(顺序不重要,只需是一个“完整”的结果,包含所有可能的组合):

{a1, b1, c1},
{a1, b1, c2},
{a1, b1, c3},
{a1, b2, c1},
{a1, b2, c2},
{a1, b2, c3},
...
{a2, b1, c1},
{a2, b1, c2},
...
{a3, b1, c1},
{a3, b1, c2},
...
{an, bn, cn}

这基本上是一个计数问题,但我想看看是否可以使用Java 8的流来解决。

0