Konvertieren Sie das Array in eine Karte des Array-Index in den Wert [duplizieren].
Dec 13 2020
Was ist los mit diesem 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]));
Ich hoffe, Map
mit diesen Werten ein zu produzieren :
{0=8, 1=3, 2=4}
Aber der Fehler ist
Methodensammlung in der Schnittstelle IntStream kann nicht auf bestimmte Typen angewendet werden.
Antworten
3 Mureinik Dec 13 2020 at 03:28
Sie müssen die int
s bis Integer
s boxen :
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#collecterfordert drei Argumente; Wenn Sie die Version mit zwei Argumenten verwenden möchten, müssen Sie IntStream#boxedsie in eine konvertieren 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
Dieser Fehler liegt daran, dass idx
es sich um ein Objekt und nicht um ein Int handelt