Iterabile per lo streaming in Java

1. Panoramica

In questo breve tutorial, convertiamo un oggetto Java Iterable in uno Stream ed eseguiamo alcune operazioni standard su di esso.

2. Conversione di Iterable in Stream

L' interfaccia Iterable è progettata tenendo presente la generalità e non fornisce alcun metodo stream () da solo.

In poche parole, puoi passarlo al metodo StreamSupport.stream () e ottenere un flusso dall'istanza Iterable data .

Consideriamo la nostra istanza Iterable :

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

Ed ecco come possiamo convertire questa istanza Iterable in uno Stream:

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

Si noti che il secondo parametro in StreamSupport.stream () determina se il flusso risultante deve essere parallelo o sequenziale. Dovresti impostarlo vero, per un flusso parallelo .

Ora testiamo la nostra implementazione:

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

Inoltre, una breve nota a margine : i flussi non sono riutilizzabili, mentre Iterable lo è; fornisce anche un metodo spliterator () , che restituisce un'istanza java.lang.Spliterator sugli elementi descritti dal dato Iterable .

3. Esecuzione dell'operazione di streaming

Eseguiamo una semplice operazione di flusso:

@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. Conclusione

Questo semplice tutorial mostra come convertire un'istanza Iterable in un'istanza Stream ed eseguire operazioni standard su di essa, proprio come avresti fatto per qualsiasi altra istanza di Collection .

L'implementazione di tutti gli snippet di codice può essere trovata nel progetto Github.