Corrents Java per a principiants: Introducció a l’ús de corrents a Java

Corrents Java per a principiants: Introducció a l’ús de corrents a Java

Els fluxos Java 8 permeten als desenvolupadors extreure dades precises d’una gran col·lecció, mitjançant un conjunt d’operacions predefinides.





Abans del llançament de Java 8, l'ús del terme 'flux' a Java s'associava automàticament a E / S. Tanmateix, Java 8 va introduir un flux que es pot anomenar un conjunt de passos computacionals encadenats en el que normalment es coneix com a 'canalització de flux'.





Aquest article us presentarà els fluxos de Java 8 i demostrarà com poden ser útils en els vostres projectes.





Què és un flux?

Un flux és una interfície Java que pren una font, realitza un conjunt d'operacions per extreure dades específiques i, a continuació, proporciona aquestes dades a l'aplicació per utilitzar-les. Essencialment, permet extreure dades especialitzades d’una col·lecció de dades generalitzades.

Com funcionen els corrents

Una canalització de flux sempre comença amb una font. El tipus de font depèn del tipus de dades amb què estigueu tractant, però dues de les més populars són les matrius i les col·leccions.



Per transformar la col·lecció en un flux inicial, haureu d'afegir el fitxer corrent() funció a la font. Això col·locarà la font a la canalització del flux on hi ha diverses operacions intermèdies diferents (com ara filter () i ordenar () ) pot operar-hi.

Després de realitzar totes les operacions intermèdies necessàries, podeu introduir una operació de terminal (com ara per cadascú() ), que produirà les dades extretes prèviament de la font.





La vida sense corrents

Java 8 es va llançar el 2014, però abans, els desenvolupadors de Java encara necessitaven extreure dades especialitzades d’una col·lecció de dades generals.

funciona realment l'aplicació de desitjos

Suposem que teniu una llista de caràcters aleatoris que es combinen amb números aleatoris per formar valors de cadena únics, però només voleu que els valors que comencin amb el caràcter C vulgueu ordenar el resultat en ordre ascendent. Així és com extreuríeu aquestes dades sense fluxos.





Relacionat: Què cal saber sobre l'ús de les cadenes a Java

Filtrar i ordenar valors sense fluxos Exemple


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

També haureu de declarar i inicialitzar la llista de matrius tant si utilitzeu fluxos d’expressió com qualsevol altre mètode d’extracció. El que no hauríeu de fer si feu servir fluxos és declarar una nova variable per contenir els valors requerits ni crear les altres cinc línies de codi més de l'exemple anterior.

Relacionat: Com crear i realitzar operacions en matrius a Java

El codi anterior produeix la següent sortida a la consola:


C11
C12
C13
C14
C15
C16

La vida amb corrents

En programació, l'eficiència parla de produir el mateix resultat amb un codi significativament inferior. Això és exactament el que fa una canalització de flux per a un programador. Per tant, la propera vegada que algú es pregunti: per què és important fer servir fluxos al vostre projecte? En poques paraules: els fluxos admeten una programació eficient.

Continuant amb el nostre exemple anterior, així és com introduir corrents transforma tot el programa.

Filtrar i ordenar valors amb un exemple de flux


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

El codi anterior mostra la potència de la interfície de transmissió. Pren una llista de valors de matriu aleatòria i la transforma en un flux mitjançant el fitxer corrent() funció. El flux es redueix a una llista de matrius que conté els valors necessaris (que són tots els valors que comencen per C ), utilitzant el filter () funció.

Com podeu veure a l'exemple anterior, el fitxer C els valors s’ordenen a l’atzar a la llista de matrius. Si imprimís el flux en aquest punt de la canonada, el valor C15 s’imprimiria primer. Per tant, el ordenar () s'introdueix la funció a la canonada de flux per reordenar la nova matriu en ordre ascendent.

La funció final a la canalització de flux és un per cadascú() funció. Aquesta és una funció de terminal que s’utilitza per aturar la canalització del flux i produeix els resultats següents a la consola:


C11
C12
C13
C14
C15
C16

Transmissió d'operacions intermèdies

Hi ha una llista extensa d’operacions intermèdies que es poden utilitzar en una canonada de flux.

Una canalització de flux sempre comença amb una font única i un corrent() i acaba sempre amb una única operació de terminal (tot i que hi ha diverses opcions diferents per triar). Però entre aquestes dues seccions hi ha una llista de sis operacions intermèdies que podeu utilitzar.

En el nostre exemple anterior, només s'utilitzen dues d'aquestes operacions intermèdies --- filter () i ordenar () . L'operació intermèdia que trieu dependrà de les tasques que vulgueu realitzar.

Si algun dels valors que comencen per C a la nostra llista de matrius anterior estigués en minúscula i els hi fem les mateixes operacions intermèdies, obtindríem el següent resultat.

Execució d’operacions de filtratge i ordenació en valors minúsculs


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

El codi anterior produirà els següents valors a la consola:


C11
C12
C14
C15

L'únic problema amb la sortida anterior és que no representa amb precisió tots els C valors de la nostra llista de matrius. Una bona manera de solucionar aquest petit error és introduir una altra operació intermèdia a la canalització del flux; aquesta operació es coneix com a mapa () funció.

Utilització de l'exemple de funció de mapa


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

El mapa () la funció transforma un objecte d'un estat a un altre; al nostre exemple anterior, transforma tots els caràcters en minúscules de la llista de matrius en majúscules.

Col·locació del fitxer mapa () funcionen just abans de filter () La funció recupera tots els valors que comencen per C de la llista de matrius.

El codi anterior produeix el següent resultat a la consola, representant correctament tots els fitxers C valors de la llista de matrius.


C11
C12
C13
C14
C15
C16

Les altres tres operacions intermèdies que podeu utilitzar a les vostres aplicacions inclouen:

  • ullada()
  • limit ()
  • Omet()

Els corrents de Java 8 faciliten la creació de codi eficient

Amb els fluxos Java 8 podeu extreure dades rellevants específiques i específiques d’una font gran amb una línia de codi. Sempre que inclogui la inicial corrent() i un operador de terminal, podeu utilitzar qualsevol combinació d’operacions intermèdies que proporcionin sortides adequades per al vostre objectiu.

la pestanya 3 de la galàxia no s'activarà

Si us pregunteu sobre la línia de codi inclosa al nostre filter () funció; es coneix com a 'expressió lambda'. Les expressions Lambda són una altra característica introduïda amb Java 8, i té una gran quantitat de pepites que us poden semblar útils.

Compartir Compartir Tweet Correu electrònic Una introducció ràpida a Java 8 Lambdas

Si sou un programador de Java i esteu interessat en obtenir més informació sobre Java 8 lambdas, en aquest article analitzarem de prop la sintaxi i l’ús de lambda.

Llegiu a continuació
Temes relacionats
  • Programació
  • Java
  • Tutorials de codificació
Sobre l'autor Kadeisha Kean(21 articles publicats)

Kadeisha Kean és un desenvolupador de programari complet i escriptor tècnic / tecnològic. Té la capacitat diferent de simplificar alguns dels conceptes tecnològics més complexos; la producció de material fàcilment comprensible per a qualsevol novell en tecnologia. L’apassiona escriure, desenvolupar programes interessants i viatjar pel món (a través de documentals).

Més de Kadeisha Kean

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us