Introdotta in Java 8, l'API Stream viene utilizzata per elaborare raccolte di oggetti. Uno stream in Java è una sequenza di oggetti che supporta vari metodi che possono essere messi in pipeline per produrre il risultato desiderato.
Utilizzo di Stream in Java
Gli usi di Stream in Java sono menzionati di seguito:
- L'API Stream è un modo per esprimere ed elaborare raccolte di oggetti.
- Consentici di eseguire operazioni come filtraggio, mappatura, riduzione e ordinamento.
Come creare un flusso Java?
La creazione di Java Stream è uno dei passaggi più basilari prima di considerare le funzionalità di Java Stream. Di seguito è riportata la sintassi fornita su come dichiarare Java Stream.
Sintassi
Stream stream;>
Qui T è una classe, un oggetto o un tipo di dati a seconda della dichiarazione.
Funzionalità del flusso Java
Le funzionalità del flusso Java sono menzionate di seguito:
- Un flusso non è una struttura dati, ma prende input dalle raccolte, dagli array o dai canali I/O.
- I flussi non modificano la struttura dei dati originale, forniscono solo il risultato secondo i metodi in pipeline.
- Ogni operazione intermedia viene eseguita pigramente e come risultato restituisce un flusso, quindi è possibile eseguire la pipeline di varie operazioni intermedie. Le operazioni del terminale segnano la fine del flusso e restituiscono il risultato.
Diverse operazioni sui flussi
Esistono due tipi di operazioni negli stream:
booleano in c
- Operazioni intermedie
- Terminare le operazioni
Operazioni intermedie

Le operazioni intermedie sono i tipi di operazioni in cui più metodi sono concatenati in una riga.
Caratteristiche delle operazioni intermedie
- I metodi sono concatenati insieme.
- Le operazioni intermedie trasformano un flusso in un altro flusso.
- Abilita il concetto di filtraggio in cui un metodo filtra i dati e li passa a un altro metodo dopo l'elaborazione.
Vantaggio di Java Stream
Ci sono alcuni vantaggi per cui utilizziamo Stream in Java come menzionato di seguito:
- Nessun spazio di archiviazione
- Pipeline di funzioni
- Pigrizia
- Può essere infinito
- Può essere parallelizzato
- Può essere creato da raccolte, array, righe di file, metodi in Stream, IntStream ecc.
Importanti operazioni intermedie
Ci sono alcune operazioni intermedie menzionate di seguito:
1. mappa()
Il metodo map viene utilizzato per restituire un flusso costituito dai risultati dell'applicazione della funzione data agli elementi di questo flusso.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filtro()
Il metodo filter viene utilizzato per selezionare gli elementi secondo il predicato passato come argomento.
mappe Java
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. ordinato()
Il metodo sorted viene utilizzato per ordinare il flusso.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Operazioni sui terminali
Le operazioni del terminale sono il tipo di operazioni che restituiscono il risultato. Queste operazioni non vengono elaborate ulteriormente, restituiscono semplicemente un valore di risultato finale.
la migliore auto del mondo
Importanti operazioni del terminale
Di seguito sono menzionate alcune operazioni del terminale:
1. raccogliere()
Il metodo Collect viene utilizzato per restituire il risultato delle operazioni intermedie eseguite sul flusso.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. perOgni()
Il metodo forEach viene utilizzato per scorrere ogni elemento dello stream.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. ridurre()
Il metodo reduce viene utilizzato per ridurre gli elementi di uno stream a un singolo valore. Il metodo reduce accetta BinaryOperator come parametro.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Qui alla variabile an viene assegnato 0 come valore iniziale e i viene aggiunto ad esso.
Nota: Le operazioni intermedie vengono eseguite in base al concetto di valutazione pigra, che garantisce che ogni metodo restituisca un valore fisso (operazione terminale) prima di passare al metodo successivo.
Esempio di flusso Java
Giava
esempi di programmazione Python
convertire un numero intero in una stringa
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> >public> static> void> main(String args[])> >{> >// create a list of integers> >List number = Arrays.asList(>2>,>3>,>4>,>5>);> >// demonstration of map method> >List square> >= number.stream()> >.map(x ->x*x)> >.collect(Collectors.toList());> >// create a list of String> >List names = Arrays.asList(> >'Reflection'>,>'Collection'>,>'Stream'>);> >// demonstration of filter method> >List result> >= names.stream()> >.filter(s ->s.startsWith(>'S'>))> >.collect(Collectors.toList());> > >System.out.println(result);> >// demonstration of sorted method> >List show> >= names.stream()> >.sorted()> >.collect(Collectors.toList());> > >System.out.println(show);> >// create a list of integers> >List numbers> >= Arrays.asList(>2>,>3>,>4>,>5>,>2>);> >// collect method returns a set> >Set squareSet> >= numbers.stream()> >.map(x ->x*x)> >.collect(Collectors.toSet());> > >System.out.println(squareSet);> >// demonstration of forEach method> >number.stream()> >.map(x ->x*x)> >.forEach(y ->System.out.println(y));> >// demonstration of reduce method> >int> even> >= number.stream()> >.filter(x ->x %>2> ==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }> |
>
>
Produzione
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Punti/Osservazioni importanti su Java Stream
- Un flusso è costituito da una sorgente seguita da zero o più metodi intermedi combinati insieme (pipeline) e da un metodo terminale per elaborare gli oggetti ottenuti dalla sorgente secondo i metodi descritti.
- Il flusso viene utilizzato per calcolare gli elementi secondo i metodi pipeline senza alterare il valore originale dell'oggetto.