Penukaran IntStream Java

1. Pengenalan

Dalam tutorial ringkas ini, kami akan membahas semua kemungkinan mengenai penukaran IntStream ke jenis lain .

Pembacaan menarik mengenai tinju dan unboxing atau iterasi disarankan sebagai pelengkap tutorial ini.

2. IntStream ke Array

Mari kita mulakan meneroka bagaimana kita boleh menukar dari IntStream objek kepada pelbagai int s .

Demi contoh ini, mari kita hasilkan 50 nombor genap pertama dan simpannya dalam array sebagai hasilnya:

@Test public void intStreamToArray() { int[] first50EvenNumbers = IntStream.iterate(0, i -> i + 2) .limit(50) .toArray(); assertThat(first50EvenNumbers).hasSize(50); assertThat(first50EvenNumbers[2]).isEqualTo(4); }

Pertama, mari buat aliran bilangan bulat yang tidak terhingga bermula dari 0 dan lelaran dengan menambahkan 2 pada setiap elemen. Sejurus selepas itu, kita perlu menambahkan had operasi perantaraan agar operasi ini, entah bagaimana, akan berakhir.

Akhirnya, mari kita gunakan pengumpulan operasi penamatan untuk mengumpulkan Stream ini ke array.

Ini adalah cara yang lurus ke hadapan menjana pelbagai int s .

3. IntStream ke Senarai

Mari kita menukar sekarang yang IntStream kepada Senarai daripada Integer .

Dalam kes ini, hanya untuk menambahkan lebih banyak variasi pada contoh, mari gunakan julat kaedah dan bukannya kaedah mengulangi . Kaedah ini akan menghasilkan IntStream dari int 0 hingga int 50 (tidak termasuk kerana ini adalah jarak terbuka):

@Test public void intStreamToList() { List first50IntegerNumbers = IntStream.range(0, 50) .boxed() .collect(Collectors.toList()); assertThat(first50IntegerNumbers).hasSize(50); assertThat(first50IntegerNumbers.get(2)).isEqualTo(2); }

Dalam contoh ini, kami menggunakan julat kaedah . Bahagian yang paling terkenal di sini adalah menggunakan kaedah kotak , yang, seperti namanya, akan memasukkan semua elemen int dalam IntStream dan akan mengembalikan Stream .

Akhirnya, kita boleh menggunakan pengumpul untuk mendapatkan senarai bilangan bulat .

4. IntStream to String

Untuk topik terakhir kami, mari kita meneroka bagaimana kita boleh mendapatkan yang String dari IntStream .

Dalam kes ini, kami akan menghasilkan hanya 3 int pertama (0, 1 dan 2):

@Test public void intStreamToString() { String first3numbers = IntStream.of(0, 1, 2) .mapToObj(String::valueOf) .collect(Collectors.joining(", ", "[", "]")); assertThat(first3numbers).isEqualTo("[0, 1, 2]"); }

Pertama, dalam kes ini, kita membina IntStream dengan konstruktor IntStream.of () . Selepas mempunyai Stream , kita perlu entah bagaimana menjana Stream dari IntStream . Oleh itu, kita boleh menggunakan kaedah mapToObj perantaraan yang akan mengambil IntStream dan akan mengembalikan Aliran dari jenis objek yang dihasilkan yang dipetakan dalam kaedah yang dipanggil.

Akhirnya, kami menggunakan penggabungan pengumpul yang mengambil Aliran dan dapat menambahkan setiap elemen Aliran dengan menggunakan pembatas, dan sebagai pilihan awalan dan akhiran.

5. Kesimpulan

Dalam tutorial ringkas ini, kami telah meneroka semua alternatif apabila kami perlu menukar IntStream ke jenis lain. Secara khusus, kami melalui contoh-contoh seperti menghasilkan array, List , dan String .

Dan, seperti biasa, contoh kod tersedia di GitHub.