我有两个数字列表,我想找到所有可能的数字对。例如,给定列表 [1, 2, 3]
和 [3, 4]
结果应该是:
[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]
我知道我可以使用 for 循环 做到这一点,但有没有更简洁的方法可以使用 Java 8 流 做到这一点?
我尝试了以下方法,但在得到 List<Stream<int[]>>
时遗漏了一些东西而不是 List<int[]>
.
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(3, 4);
List<int[]> pairs = list1.stream()
.map(i -> list2.stream()
.map(j -> new int[]{i, j}))
.collect(Collectors.toList());
pairs.forEach(i -> {
System.out.println("{" + i[0] + "," + i[1] + "}");
});
}
最佳答案
使用flatMap() 方法代替map(),它将流合并为一个。 引用:Difference Between map() and flatMap()和 flatMap() example
关于java - 如何使用流从两个列表或数组乘法中查找元素对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220047/