logo

Transmissió en Java

Introduït a Java 8, Stream API s'utilitza per processar col·leccions d'objectes. Un flux en Java és una seqüència d'objectes que admet diversos mètodes que es poden canalitzar per produir el resultat desitjat.

Ús de Stream a Java

A continuació s'esmenten els usos de Stream a Java:

  1. Stream API és una manera d'expressar i processar col·leccions d'objectes.
  2. Permeteu-nos realitzar operacions com ara filtrar, mapejar, reduir i ordenar.

Com crear Java Stream?

La creació de Java Stream és un dels passos més bàsics abans de considerar les funcionalitats de Java Stream. A continuació es mostra la sintaxi de com declarar Java Stream.



Sintaxi

Stream stream;>

Aquí T és una classe, un objecte o un tipus de dades depenent de la declaració.

Característiques de Java Stream

Les característiques del flux Java s'esmenten a continuació:

  • Un flux no és una estructura de dades, sinó que pren entrada de les col·leccions, matrius o canals d'E/S.
  • Els fluxos no canvien l'estructura de dades original, només proporcionen el resultat segons els mètodes canalitzats.
  • Cada operació intermèdia s'executa de manera mandrosa i com a resultat retorna un flux, per tant es poden canalitzar diverses operacions intermèdies. Les operacions del terminal marquen el final del flux i retornen el resultat.

Diferents operacions en fluxos

Hi ha dos tipus d'operacions en fluxos:

  1. Operacions intermèdies
  2. Finalitzar les operacions

Operacions intermèdies

operacions java stream

sharwanand

Les operacions intermèdies són els tipus d'operacions en què s'encadenen diversos mètodes en fila.

Característiques de les operacions intermèdies

  1. Els mètodes estan encadenats.
  2. Les operacions intermèdies transformen un flux en un altre flux.
  3. Habilita el concepte de filtratge on un mètode filtra les dades i les passa a un altre després del processament.

Benefici de Java Stream

Hi ha alguns avantatges pels quals fem servir Stream a Java, tal com s'esmenta a continuació:

  • Sense emmagatzematge
  • Conducte de funcions
  • Mandra
  • Pot ser infinit
  • Es pot paral·lelitzar
  • Es pot crear a partir de col·leccions, matrius, línies de fitxers, mètodes en flux, IntStream, etc.

Operacions intermèdies importants

Hi ha algunes operacions intermèdies esmentades a continuació:

1. mapa()

El mètode map s'utilitza per retornar un flux que consisteix en els resultats d'aplicar la funció donada als elements d'aquest flux.

mètode de subcadena java
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>

2. filtre()

El mètode de filtre s'utilitza per seleccionar elements segons el predicat passat com a argument.

List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());>

3. ordenat()

El mètode ordenat s'utilitza per ordenar el flux.

List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());>

Operacions de terminal

Les operacions de terminal són el tipus d'operacions que retornen el resultat. Aquestes operacions no es processen més, només retornen un valor de resultat final.

Operacions importants de la terminal

Hi ha algunes operacions de terminal esmentades a continuació:

1. recollir()

El mètode de recollida s'utilitza per retornar el resultat de les operacions intermèdies realitzades al flux.

List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>

2. per cada()

El mètode forEach s'utilitza per iterar a través de tots els elements del flux.

List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>

3. reduir()

El mètode reduce s'utilitza per reduir els elements d'un flux a un sol valor. El mètode reduce pren un BinaryOperator com a paràmetre.

List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>

Aquí s'assigna a la variable 0 com a valor inicial i s'hi afegeix i.

Nota: Les operacions intermèdies s'executen basant-se en el concepte d'avaluació mandrosa, que garanteix que cada mètode retorni un valor fix (operació de terminal) abans de passar al mètode següent.

Exemple de Java Stream

Java

millor automòbil del món


tipus d'arbre binari



// 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 %>>>==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }>

>

>

Sortida

[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>

Punts/Observacions importants de Java Stream

  1. Un flux consisteix en una font seguida de zero o més mètodes intermedis combinats junts (canalitzats) i un mètode terminal per processar els objectes obtinguts de la font segons els mètodes descrits.
  2. El flux s'utilitza per calcular elements segons els mètodes canalitzats sense alterar el valor original de l'objecte.