Converta a matriz em um mapa de índice de matriz em valor [duplicado]
Dec 13 2020
O que há de errado com 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 produzir um Map
com estes valores:
{0=8, 1=3, 2=4}
Mas o erro é
o método collect na interface IntStream não pode ser aplicado a determinados tipos;
Respostas
3 Mureinik Dec 13 2020 at 03:28
Você precisa encaixotar os int
s para 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#collectrequer três argumentos; se quiser usar a versão de 2 argumentos, você deve usar IntStream#boxedpara convertê-la em um 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 erro é devido ao fato de idx
ser um objeto e não um int
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino