Tutto ciò che devi sapere sullo streaming in Java



Questo articolo ti introdurrà a Stream in Java, un pacchetto introdotto di recente in Java e ti spiegherà in dettaglio cosa può fare.

Un nuovo pacchetto aggiuntivo in Java 8, noto come java.util.stream è stato aggiunto per gli utenti per un'esperienza di programmazione efficiente. Un flusso può essere definito come una sequenza di oggetti, che supporta più metodi. In questo articolo esploreremo Stream in

I seguenti suggerimenti saranno trattati in questo articolo,





Prima di iniziare con questo articolo su Stream in Java, diamo un'occhiata ad alcune importanti funzionalità,

Stream in Java: caratteristiche

  • Un flusso non è una struttura dati e non memorizza elementi. Collezioni, array o canali I / O è da dove prende l'input.
  • L'origine del flusso rimane invariata dopo che le operazioni vengono eseguite su di esso. Ad esempio, il filtraggio di un flusso produce semplicemente un nuovo flusso senza gli elementi filtrati, invece di modificare il flusso originale.
  • Le operazioni di aggregazione come il filtro, la riduzione, la corrispondenza, la ricerca e così via sono supportate dal flusso.
  • La pigrizia può essere considerata una caratteristica dello stream, in quanto valuta i codici solo quando richiesto.
  • La visita degli elementi presenti nel flusso può essere eseguita solo una volta durante la vita di un flusso. È necessario creare un nuovo flusso per rivisitare gli stessi elementi presenti nella sorgente.

Andando avanti con questo articolo su Stream in Java



Generazione di flussi

Gli stream possono essere generati con i seguenti metodi:

  • flusso () - Viene restituito un flusso sequenziale.Collezioneè considerato come la fonte.
  • parallelStream () - Viene restituito un flusso parallelo. La raccolta è considerata come la fonte.
List strings = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') List filtered = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Andando avanti con questo articolo su Stream in Java

Operazioni sugli stream:

Operazioni intermedie:

carta geografica



Gli elementi presenti nella raccolta possono essere mappati su altri oggetti in base al predicato passato come argomento. L'esempio seguente viene utilizzato per visualizzare quadrati unici dei numeri utilizzando il metodo map.

List num = Arrays.asList (5,4,4,2,3,3) List squares = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

filtro

java come terminare un programma

Gli elementi possono essere rimossi sulla base di un criterio utilizzando questo metodo.

List name = Arrays.asList ('Saturday', 'Sunday', 'Thursday') List res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

smistato

Il flusso può essere ordinato utilizzando questo metodo.

Nome elenco = Arrays.asList ('Sabato', 'Domenica', 'Giovedì') Elenco res = nome.stream (). Sort (). Collect (Collectors.toList ())

Stream in Java: Operazioni del terminale:

raccogliere

Il risultato dell'elaborazione sugli elementi di un flusso può essere combinato utilizzando l'operazione di raccolta.

List num = Arrays.asList (4,3,2,5,6) Imposta res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

per ciascuno

Questo metodo viene utilizzato per iterare attraverso ogni elemento presente nel flusso.

Elenco num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

ridurre

Gli elementi del flusso possono essere ridotti a un singolo valore utilizzando questo metodo.

Elenco num = Arrays.asList (4,3,2,5) int pari = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + io)

Alla variabile res viene assegnato inizialmente il valore 0 e i viene aggiunto ad essa.

Andando avanti con questo articolo su Stream in Java

Filtraggio

Il codice può essere filtrato utilizzando il metodo stream. Nell'esempio seguente, il prezzo degli strumenti viene filtrato.

che cos'è un errore chiave
import java.util. * import java.util.stream.Collectors class Strumento {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} public class Test {public static void main (String [] args) {List instrumentsList = new ArrayList () // Aggiunta di prodotti instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (new Instrument (2, 'Piano', 18000f)) instrumentsList.add (new Instrument (3, 'Flute', 15000f)) instrumentsList.add (new Instrument (4, 'Drums', 48000f)) instrumentsList.add (new Instrument ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // filtering data .map (p-> p.price) // fetching price .collect ( Collectors.toList ()) // raccolta come elenco System.out.println (InstrumentPriceList2)}}
 Produzione: 

[48000.0, 32000.0]

Andando avanti con questo articolo su Stream in Java

Iterazione:

L'iterazione può essere eseguita utilizzando stream in java.

import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). limit (6) .forEach (System.out :: println)}}

Produzione:

4

8

12

16

venti

24

Diamo un'occhiata a un altro esempio, per comprendere più efficacemente il concetto di Stream in java.

Esempio:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// creazione di un elenco di numeri interi List num = Arrays.asList (6,7,8,9 ) // utilizzando il metodo map List squares = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (squares) // creazione di un elenco di String List days = Arrays.asList ('Friday', 'Saturday', 'Sunday') // metodo di filtro List res = days .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // metodo ordinato Visualizzazione elenco = days.stream (). Sort (). collect (Collectors.toList ()) System.out.println (display) / / creazione di un elenco di numeri interi List number = Arrays.asList (6,9,5,7,1) // il metodo collect restituisce un set Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach metodo num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / metodo reduce int pari = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (risultato, i) -> risultato + i) System.out.println (pari)}}

Produzione:

[36, 49, 64, 81]

[Sabato domenica]

cos'è un evento in javascript

[Venerdì sabato domenica]

[81, 49, 1, 36, 25]

36

49

64

81

14

I flussi consentono all'utente di eseguire operazioni sugli elementi in modo efficace.

Così siamo giunti alla fine di questo articolo su 'Stream in Java'. Se desideri saperne di più, dai un'occhiata al Java Training di Edureka, una società di formazione online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.