Konversi IntStream Java

1. Perkenalan

Dalam tutorial singkat ini, kita akan membahas semua kemungkinan mengenai konversi IntStream ke tipe lain .

Bacaan menarik tentang tinju dan unboxing atau iterasi direkomendasikan sebagai pelengkap tutorial ini.

2. IntStream ke Array

Mari mulai menjelajahi bagaimana kita dapat mengonversi dari objek IntStream ke array int s .

Demi contoh ini, mari buat 50 angka genap pertama dan simpan 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 tak terbatas mulai dari 0 dan lakukan iterasi dengan menambahkan 2 ke setiap elemen. Segera setelah itu, kita perlu menambahkan batas operasi perantara agar operasi ini, entah bagaimana, dihentikan.

Terakhir, mari gunakan operasi penghentian kumpulkan untuk mengumpulkan Stream ini ke array.

Ini adalah cara yang lurus ke depan menghasilkan array int s .

3. IntStream to List

Mari kita mengkonversi sekarang sebuah IntStream ke Daftar dari Bilangan bulat .

Dalam kasus ini, hanya untuk menambahkan lebih banyak variasi pada contoh, mari gunakan metode range daripada metode iterasi . Metode ini akan menghasilkan IntStream dari int 0 ke int 50 (tidak termasuk karena ini adalah rentang 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 rentang metode . Bagian yang paling terkenal di sini adalah menggunakan metode kotak , yang, seperti yang ditunjukkan namanya, akan mengemas semua elemen int di IntStream dan akan mengembalikan Stream .

Akhirnya, kita bisa menggunakan kolektor untuk mendapatkan daftar bilangan bulat .

4. IntStream ke String

Untuk topik terakhir kami, mari kita telusuri bagaimana kita bisa mendapatkan sebuah String dari IntStream .

Dalam kasus ini, kami hanya akan menghasilkan 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 kasus ini, kita membuat IntStream dengan konstruktor IntStream.of () . Setelah memiliki Stream , kita perlu menghasilkan Stream dari IntStream . Oleh karena itu, kita dapat menggunakan metode mapToObj perantara yang akan mengambil IntStream dan akan mengembalikan Stream dari tipe objek yang dihasilkan yang dipetakan dalam metode yang disebut.

Terakhir, kami menggunakan gabungan kolektor yang mengambil Stream dan dapat menambahkan setiap elemen Stream dengan menggunakan pemisah, dan secara opsional berupa awalan dan sufiks.

5. Kesimpulan

Dalam tutorial singkat ini, kami telah menjelajahi semua alternatif ketika kami perlu mengonversi IntStream ke tipe lain. Secara khusus, kami membahas contoh-contoh seperti menghasilkan array, List , dan String .

Dan, seperti biasa, kode sampel tersedia di GitHub.