Konwertuj tablicę na mapę indeksu tablicy na wartość [duplikat]
Dec 13 2020
Co jest nie tak z tym kodem?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
Mam nadzieję, że uda mi się uzyskać znak Map
z następującymi wartościami:
{0=8, 1=3, 2=4}
Ale błąd jest
metoda collect w interfejsie IntStream nie może być zastosowana do podanych typów;
Odpowiedzi
3 Mureinik Dec 13 2020 at 03:28
Musisz zapakować int
s do 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#collectwymaga trzech argumentów; jeśli chcesz użyć wersji 2-argumentowej, musisz użyć, IntStream#boxedaby przekonwertować ją na plik 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
Ten błąd wynika z idx
tego, że jest to obiekt, a nie int