配列を値への配列インデックスのマップに変換します[重複]
Dec 13 2020
このコードの何が問題になっていますか?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
私はMap
これらの値でを生成したいと思っています:
{0=8, 1=3, 2=4}
しかし、エラーは
インターフェイスIntStreamのメソッドcollectは、指定された型には適用できません。
回答
3 Mureinik Dec 13 2020 at 03:28
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#collect3つの引数が必要です。2引数バージョンを使用IntStream#boxedする場合は、を使用してに変換する必要があります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
これidx
は、intではなくオブジェクトであるためです。