【发布时间】:2018-06-29 15:08:49
【问题描述】:
我有两个 int 数组,a = {10,20,30} 和 {1,2,3}。
我想得到这两个数组的Cartesian product。
当我使用List 或Integers 时,逻辑工作正常:
List<Integer> intList = Arrays.asList(10,20,30);
List<Integer> intList1 = Arrays.asList(1,2,3);
intList.stream().flatMap(i -> intList1.stream().map(j -> new int[]{i,j})).collect(Collectors.toList());
但是,当我使用 int[] 时,我遇到了编译错误。
错误:(16, 79) java: 不兼容的类型: lambda 中的返回类型错误 表达 不存在 U 类型变量的实例,因此 java.util.stream.Stream 符合 java.util.stream.IntStream
int[] intArray = {10,20,30};
int[] intArray1 = {1,2,3};
Arrays.stream(intArray).flatMap(i -> Arrays.stream(intArray1).mapToObj(j -> new int[]{j,i})).collect(Collectors.toList());
请帮助我理解这里出了什么问题。
P。 S.
Arrays.stream(intArray).mapToObj(i -> new int[]{i,i+1}).collect(Collectors.toList());
生成输出为{(10,11),(20,21),(30,31)}。
【问题讨论】:
标签: java integer java-stream