Gjørbar å streame i Java

1. Oversikt

I denne korte opplæringen, la oss konvertere en Java Iterabel objekt i en Strøm og utføre noen standardoperasjoner på den.

2. Konvertering Iterabel til Strøm

De Iterabel grensesnittet er utformet med tanke på allmenheten og gir ikke noe strøm() metode alene.

Enkelt sagt, du kan overføre det til StreamSupport.stream () metode og få en Strøm fra det gitte Iterabel forekomst.

La oss vurdere vår Iterabel forekomst:

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

Og her kan vi konvertere dette Iterabel forekomst i en Strøm:

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

Merk at den andre parameteren i StreamSupport.stream () avgjør om det resulterende Strøm skal være parallell eller sekvensiell. Du bør sette det sant, for en parallell Strøm.

La oss nå teste implementeringen vår:

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

Også, en rask side-note - strømmer kan ikke gjenbrukes, mens Iterabel er; det gir også en spliterator () metode, som returnerer a java.lang.Spliterator-forekomst over elementene beskrevet av det gitte Iterabel.

3. Utfører Strøm Operasjon

La oss utføre en enkel strømoperasjon:

@Test offentlig ugyldig nårConvertedToList_thenCorrect () {Iterable iterable = Arrays.asList ("Testing", "Iterable", "conversion", "to", "Stream"); Listeresultat = StreamSupport.stream (iterable.spliterator (), false) .map (String :: toUpperCase) .collect (Collectors.toList ()); assertThat (resultatet inneholder ("TESTING", "ITERABLE", "CONVERSION", "TO", "STREAM")); }

4. Konklusjon

Denne enkle opplæringen viser hvordan du kan konvertere en Iterabel forekomst i en Strøm forekomme og utføre standardoperasjoner på den, akkurat som du ville gjort for andre Samling forekomst.

Implementeringen av alle kodebitene finner du i Github-prosjektet.


$config[zx-auto] not found$config[zx-overlay] not found