Convertir un tableau en une carte d'index de tableau en valeur [dupliquer]
Dec 13 2020
Quel est le problème avec ce code?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
J'espère produire un Map
avec ces valeurs:
{0=8, 1=3, 2=4}
Mais l'erreur est
la méthode collect dans l'interface IntStream ne peut pas être appliquée à des types donnés;
Réponses
3 Mureinik Dec 13 2020 at 03:28
Vous devez encadrer les int
s à 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#collectnécessite trois arguments; si vous souhaitez utiliser la version à 2 arguments, vous devez l'utiliser IntStream#boxedpour la convertir en 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
Cette erreur est due au fait idx
que c'est un objet et non un int