У меня есть два массива типа int, a = {10,20,30}
и {1,2,3}
.
Я бы хотел получить декартово произведение из этих двух массивов.
Когда я использую List
из Integer
с, логика работает нормально:
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: несовместимые типы: неверный тип возврата в лямбда-выражении
выражение
не существует экземпляра (ов) переменной типа (ов) 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)}
.