使用Stream API交叉两个集合的产品

Jap*_*per 3 java cross-product java-8 java-stream

我有两个清单:

List<Integer> list1 = ...
List<Integer> list2 = ...
Run Code Online (Sandbox Code Playgroud)

我有以下课程:

class Pair {
    public Pair(final Integer i1, final Integer i2) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Java8流是否可以将两个输入列表组合成List<Pair>?这可以通过双循环来轻松完成,但我想知道Java8流是否可行.

JB *_*zet 7

list1.stream()
     .flatMap(i1 -> list2.stream()
                         .map(i2 -> new Pair(i1, i2)))
     .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)