1. Gambaran keseluruhan
Dalam tutorial ringkas ini, mari kita ubah objek Java Iterable menjadi Stream dan melakukan beberapa operasi standard di atasnya.
2. Menukar Iterable ke Stream
The Iterable antara muka direka dengan keluasan dalam fikiran dan tidak memberikan apa-apa aliran () kaedah sendiri.
Ringkasnya, anda boleh menyebarkannya ke kaedah StreamSupport.stream () dan mendapatkan Stream dari contoh Iterable yang diberikan .
Mari pertimbangkan contoh Iterable kami :
Iterable iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");
Dan inilah caranya kita dapat menukar instance Iterable ini menjadi Stream:
StreamSupport.stream(iterable.spliterator(), false);
Perhatikan bahawa param kedua di StreamSupport.stream () menentukan apakah Stream yang dihasilkan harus selari atau berurutan. Anda harus menetapkannya dengan betul, untuk Aliran selari .
Sekarang mari kita uji pelaksanaannya:
@Test public void givenIterable_whenConvertedToStream_thenNotNull() { Iterable iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream"); Assert.assertNotNull(StreamSupport.stream(iterable.spliterator(), false)); }
Juga, nota sampingan cepat - aliran tidak dapat digunakan semula, sementara Iterable adalah; ia juga menyediakan kaedah spliterator () , yang mengembalikan contoh java.lang.Spliterator ke atas elemen yang dijelaskan oleh Iterable yang diberikan .
3. Melakukan Operasi Aliran
Mari lakukan operasi aliran mudah:
@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 ringkas ini menunjukkan bagaimana anda dapat menukar instance Iterable menjadi instance Stream dan melakukan operasi standard di atasnya, seperti yang anda lakukan untuk instance Koleksi lain .
Pelaksanaan semua potongan kode boleh didapati di projek Github.