Converti array in una mappa dell'indice dell'array in valore [duplicato]
Dec 13 2020
Cosa c'è di sbagliato in questo codice?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
Spero di produrre un Mapcon questi valori:
{0=8, 1=3, 2=4}
Ma l'errore è
il metodo collect nell'interfaccia IntStream non può essere applicato a determinati tipi;
Risposte
3 Mureinik Dec 13 2020 at 03:28
Devi inscatolare la ints alla Integers:
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#collectrichiede tre argomenti; se vuoi usare la versione a 2 argomenti, devi usarla IntStream#boxedper convertirla in un file 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
Questo errore è dovuto idxal fatto che è un oggetto e non un int