Mengonversi larik menjadi Peta indeks larik menjadi nilai [duplikat]
Dec 13 2020
Ada apa dengan kode ini?
int[] nums = new int[] {8, 3, 4};
Map<Integer,Integer> val2Idx =
IntStream.range(0, nums.length)
.collect(Collectors.toMap(idx -> idx, idx -> nums[idx]));
Saya berharap menghasilkan a Map
dengan nilai-nilai ini:
{0=8, 1=3, 2=4}
Tapi kesalahannya adalah
metode kumpulkan di antarmuka IntStream tidak dapat diterapkan ke tipe yang diberikan;
Jawaban
3 Mureinik Dec 13 2020 at 03:28
Anda perlu mengemas int
s to 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#collectmembutuhkan tiga argumen; jika Anda ingin menggunakan versi 2-argumen, Anda harus menggunakan IntStream#boxeduntuk mengubahnya menjadi 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
Kesalahan ini karena idx
itu adalah objek dan bukan int
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'