Moguć je prijenos struje na Javi

1. Pregled

U ovom kratkom vodiču pretvorimo Java Iterativ objekt u a Stream i izvršite neke standardne operacije na njemu.

2. Pretvaranje Iterativ do Stream

The Iterativ sučelje je dizajnirano imajući na umu općenitost i ne pruža ga stream () metoda samostalno.

Jednostavno rečeno, možete ga proslijediti StreamSupport.stream () metoda i dobiti a Stream od datog Iterativ primjer.

Razmotrimo svoje Iterativ primjer:

Iterable iterable = Arrays.asList ("Testiranje", "Iterable", "pretvorba", "u", "Stream");

I evo kako to možemo pretvoriti Iterativ primjer u Prijenos:

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

Imajte na umu da je drugi parametar u StreamSupport.stream () određuje da li rezultirajući Stream treba biti paralelna ili sekvencijalna. Trebali biste to postaviti istinito, paralelno Stream.

Sada testirajmo našu implementaciju:

@Test javna praznina givenIterable_whenConvertedToStream_thenNotNull () {Iterable iterable = Arrays.asList ("Testiranje", "Iterable", "pretvorba", "u", "Stream"); Assert.assertNotNull (StreamSupport.stream (iterable.spliterator (), false)); }

Također, kratka napomena - potoci se ne mogu ponovno koristiti Iterativ je; ona također pruža a spliterator () metoda koja vraća a instanca java.lang.Spliterator nad elementima koje opisuje dani Iterativ.

3. Izvođenje Stream Operacija

Izvršimo jednostavnu operaciju strujanja:

@Test public void whenConvertedToList_thenCorrect () {Iterable iterable = Arrays.asList ("Testiranje", "Iterable", "pretvorba", "u", "Stream"); Rezultat popisa = StreamSupport.stream (iterable.spliterator (), false) .map (String :: toUpperCase) .collect (Collectors.toList ()); assertThat (rezultat, sadrži ("TESTIRANJE", "ITERABLO", "KONVERZIJA", "DO", "STREAM")); }

4. Zaključak

Ovaj jednostavan vodič pokazuje kako možete pretvoriti Iterativ primjer u Stream instancu i izvodite standardne operacije na njoj, baš kao što biste to učinili za bilo koju drugu Kolekcija primjer.

Implementacija svih isječaka koda može se naći u projektu Github.