Convertir matriz en un mapa de índice de matriz a valor [duplicado]
Dec 13 2020
¿Qué pasa con este código?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
Espero producir un Map
con estos valores:
{0=8, 1=3, 2=4}
Pero el error es
el método recopilado en la interfaz IntStream no se puede aplicar a tipos dados;
Respuestas
3 Mureinik Dec 13 2020 at 03:28
Es necesario a la caja de los int
s a Integer
s:
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.boxed() // Here!
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
1 iota Dec 13 2020 at 03:29
IntStream#collectrequiere tres argumentos; si desea utilizar la versión de 2 argumentos, debe utilizarla IntStream#boxedpara convertirla a Stream<Integer>
.
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length).boxed()
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
System.out.println(val2Idx);
AndreMoraes Dec 13 2020 at 03:30
Este error se debe a idx
que es un objeto y no un int