Iterable untuk Streaming di Java

1. Ikhtisar

Dalam tutorial singkat ini, mari mengonversi objek Java Iterable menjadi Stream dan melakukan beberapa operasi standar padanya.

2. Mengonversi Iterable ke Stream

The Iterable antarmuka dirancang dengan umum dalam pikiran dan tidak menyediakan aliran () metode sendiri.

Sederhananya, Anda bisa meneruskannya ke metode StreamSupport.stream () dan mendapatkan Stream dari instance Iterable yang diberikan .

Mari pertimbangkan contoh Iterable kami :

Iterable iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

Dan inilah cara kita dapat mengubah instance Iterable ini menjadi Stream:

StreamSupport.stream(iterable.spliterator(), false);

Perhatikan bahwa parameter kedua di StreamSupport.stream () menentukan apakah Aliran yang dihasilkan harus paralel atau berurutan. Anda harus menetapkannya benar, untuk Stream paralel .

Sekarang mari kita uji implementasi kita:

@Test public void givenIterable_whenConvertedToStream_thenNotNull() { Iterable iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream"); Assert.assertNotNull(StreamSupport.stream(iterable.spliterator(), false)); }

Juga, catatan samping singkat - aliran tidak dapat digunakan kembali, sedangkan Iterable adalah; itu juga menyediakan metode spliterator () , yang mengembalikan instance java.lang.Spliterator di atas elemen yang dijelaskan oleh Iterable yang diberikan .

3. Melakukan Operasi Stream

Mari kita lakukan operasi aliran sederhana:

@Test public void whenConvertedToList_thenCorrect() { Iterable iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream"); List result = StreamSupport.stream(iterable.spliterator(), false) .map(String::toUpperCase) .collect(Collectors.toList()); assertThat( result, contains("TESTING", "ITERABLE", "CONVERSION", "TO", "STREAM")); }

4. Kesimpulan

Tutorial sederhana ini menunjukkan bagaimana Anda dapat mengonversi instance Iterable menjadi instance Stream dan melakukan operasi standar padanya, seperti yang akan Anda lakukan untuk instance Collection lainnya .

Penerapan semua cuplikan kode dapat ditemukan di proyek Github.