Iterable to Stream in Java

1. Prehľad

V tomto krátkom návode poďme konvertovať Java Iterable objekt do a Prúd a vykonávať na ňom niektoré štandardné operácie.

2. Konvertovanie Iterable do Prúd

The Iterable rozhranie je navrhnuté s ohľadom na všeobecnosť a neposkytuje žiadne Prúd() metóda sama o sebe.

Jednoducho povedané, môžete to odovzdať StreamSupport.stream () metóda a získať a Prúd z daného Iterable inštancia.

Zvážme naše Iterable inštancia:

Iterable iterable = Arrays.asList ("Testovanie", "Iterable", "prevod", "na", "Stream");

A toto môžeme previesť Iterable inštancia do a Prúd:

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

Všimnite si, že druhý parameter v StreamSupport.stream () určuje, či je výsledný Prúd by mali byť paralelné alebo postupné. Mali by ste to nastaviť ako pravdu Prúd.

Teraz otestujme našu implementáciu:

@Test public void givenIterable_whenConvertedToStream_thenNotNull () {Iterable iterable = Arrays.asList ("Testovanie", "Iterable", "prevod", "na", "prúd"); Assert.assertNotNull (StreamSupport.stream (iterable.spliterator (), false)); }

Tiež krátka poznámka - streamy nie sú opakovane použiteľné Iterable je; poskytuje tiež a rozdeľovač () metóda, ktorá vráti a inštancia java.lang.Spliterator nad prvkami opísanými v danom texte Iterable.

3. Predvádzanie Prúd Prevádzka

Poďme vykonať jednoduchú operáciu streamu:

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

4. Záver

Tento jednoduchý návod ukazuje, ako môžete previesť súbor Iterable inštancia do a Prúd inštanciu a vykonávať na nej štandardné operácie, rovnako ako by ste to robili pre akékoľvek iné Zbierka inštancia.

Implementáciu všetkých fragmentov kódu nájdete v projekte Github.


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