Flux Java pour les débutants : une introduction à l'utilisation des flux en Java

Flux Java pour les débutants : une introduction à l'utilisation des flux en Java

Les flux Java 8 permettent aux développeurs d'extraire des données précises d'une grande collection, à l'aide d'un ensemble d'opérations prédéfinies.





Avant la sortie de Java 8, l'utilisation du terme « flux » en Java était automatiquement associée aux E/S. Cependant, Java 8 a introduit un flux qui peut être appelé un ensemble d'étapes de calcul enchaînées dans ce que l'on appelle communément un « pipeline de flux ».





Cet article vous présentera les flux Java 8 et montrera comment ils peuvent être utiles dans vos projets.





Qu'est-ce qu'un flux ?

Un flux est une interface Java qui prend une source, effectue un ensemble d'opérations pour extraire des données spécifiques, puis fournit ces données à l'application pour utilisation. Essentiellement, il vous permet d'extraire des données spécialisées à partir d'une collection de données généralisées.

Comment fonctionnent les flux

Un pipeline de flux commence toujours par une source. Le type de source dépend du type de données que vous traitez, mais deux des plus populaires sont les tableaux et les collections.



Pour transformer la collection en un flux initial, vous devrez ajouter le flux() fonction à la source. Cela placera la source dans le pipeline de flux où plusieurs opérations intermédiaires différentes (telles que filtre() et sorte() ) peut opérer dessus.

Une fois toutes les opérations intermédiaires requises effectuées, vous pouvez introduire une opération terminale (telle que pour chaque() ), qui produira les données précédemment extraites de la source.





La vie sans ruisseaux

Java 8 est sorti en 2014, mais avant cela, les développeurs Java devaient encore extraire des données spécialisées à partir d'une collection de données générales.

comment faire une iso bootable

Disons que vous avez une liste de caractères aléatoires qui sont combinés avec des nombres aléatoires pour former des valeurs de chaîne uniques, mais vous voulez uniquement les valeurs qui commencent par le caractère C et vous voulez organiser le résultat dans l'ordre croissant. Voici comment extraire ces données sans flux.





En rapport: Ce que vous devez savoir sur l'utilisation de chaînes en Java

Exemple de filtrage et de tri des valeurs sans flux


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));
}
}

Vous devrez également déclarer et initialiser la liste de tableaux, que vous utilisiez des flux ou une autre méthode d'extraction. Ce que vous n'auriez pas besoin de faire si vous utilisiez des flux, c'est de déclarer une nouvelle variable pour contenir les valeurs requises, ni de créer les cinq autres lignes de code dans l'exemple ci-dessus.

En rapport: Comment créer et effectuer des opérations sur des tableaux en Java

Le code ci-dessus produit la sortie suivante dans la console :


C11
C12
C13
C14
C15
C16

La vie avec des ruisseaux

En programmation, l'efficacité consiste à produire le même résultat avec beaucoup moins de code. C'est exactement ce que fait un pipeline de flux pour un programmeur. Alors la prochaine fois que quelqu'un demandera : pourquoi est-il important d'utiliser des flux dans votre projet ? En termes simples : les flux prennent en charge une programmation efficace.

Poursuivant notre exemple ci-dessus, voici comment l'introduction de flux transforme l'ensemble du programme.

Filtrage et tri des valeurs avec 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);
}
}

Le code ci-dessus montre à quel point l'interface de flux est puissante. Il prend une liste de valeurs de tableau aléatoires et la transforme en un flux en utilisant le flux() fonction. Le flux est ensuite réduit à une liste de tableaux qui contient les valeurs requises (qui sont toutes les valeurs commençant par C ), en utilisant le filtre() fonction.

Comme vous pouvez le voir dans l'exemple ci-dessus, le C les valeurs sont disposées de manière aléatoire dans la liste du tableau. Si vous deviez imprimer le flux à ce stade du pipeline, la valeur C15 serait imprimé en premier. Par conséquent, la sorte() La fonction est introduite dans le pipeline de flux pour réorganiser le nouveau tableau dans l'ordre croissant.

La fonction finale dans le pipeline de flux est un pour chaque() fonction. Il s'agit d'une fonction de terminal qui est utilisée pour arrêter le pipeline de flux et produit les résultats suivants dans la console :


C11
C12
C13
C14
C15
C16

Opérations intermédiaires de flux

Il existe une longue liste d'opérations intermédiaires pouvant être utilisées dans un pipeline de flux.

Un pipeline de flux commence toujours par une seule source et un flux() fonction, et se termine toujours par une seule opération de terminal (bien qu'il y en ait plusieurs parmi lesquelles choisir.) Mais entre ces deux sections se trouve une liste de six opérations intermédiaires que vous pouvez utiliser.

Dans notre exemple ci-dessus, seules deux de ces opérations intermédiaires sont utilisées --- filtre() et sorte() . L'opération intermédiaire que vous choisirez dépendra des tâches que vous souhaitez effectuer.

Si l'une des valeurs commençant par C dans notre liste de tableaux ci-dessus était en minuscule et que nous effectuions les mêmes opérations intermédiaires sur elles, nous obtiendrions le résultat suivant.

Exemple d'exécution d'opérations de filtrage et de tri sur des valeurs minuscules


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);
}
}

Le code ci-dessus produira les valeurs suivantes dans la console :


C11
C12
C14
C15

Le seul problème avec la sortie ci-dessus est qu'elle ne représente pas avec précision tous les C valeurs dans notre liste de tableaux. Un bon moyen de corriger cette petite erreur est d'introduire une autre opération intermédiaire dans le pipeline de flux ; cette opération est connue sous le nom de carte() fonction.

Utilisation de l'exemple de fonction de carte


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);
}
}

Les carte() la fonction transforme un objet d'un état à un autre ; dans notre exemple ci-dessus, il transforme tous les caractères minuscules de la liste de tableaux en caractères majuscules.

Placer le carte() fonction juste avant le filtre() la fonction récupère toutes les valeurs qui commencent par C de la liste des tableaux.

Le code ci-dessus produit le résultat suivant dans la console, représentant avec succès tous les C valeurs dans la liste de tableaux.


C11
C12
C13
C14
C15
C16

Les trois autres opérations intermédiaires que vous pouvez utiliser dans vos applications incluent :

  • coup d'oeil ()
  • limite()
  • sauter()

Les flux Java 8 facilitent la création de code efficace

Avec les flux Java 8, vous pouvez extraire des données pertinentes et spécifiques supplémentaires à partir d'une grande source avec une seule ligne de code. Tant que vous incluez l'initiale flux() fonction et un opérateur de terminal, vous pouvez utiliser n'importe quelle combinaison d'opérations intermédiaires qui fournissent des résultats adaptés à votre objectif.

mon téléphone ne s'allume pas

Si vous vous posez des questions sur la ligne de code contenue dans notre filtre() fonction; c'est ce qu'on appelle une « expression lambda ». Les expressions lambda sont une autre fonctionnalité introduite avec Java 8, et elles contiennent de nombreuses pépites que vous pourriez trouver utiles.

Partager Partager Tweeter E-mail Une introduction rapide à Java 8 Lambdas

Si vous êtes un programmeur Java et que vous souhaitez en savoir plus sur les lambdas Java 8, dans cet article, nous allons examiner de plus près la syntaxe et l'utilisation de lambda.

Lire la suite
Rubriques connexes
  • La programmation
  • Java
  • Tutoriels de codage
A propos de l'auteur Kadeisha Kean(21 articles publiés)

Kadeisha Kean est un développeur de logiciels Full-Stack et un rédacteur technique/technologique. Elle a la capacité distincte de simplifier certains des concepts technologiques les plus complexes; produire du matériel qui peut être facilement compris par tout novice en technologie. Elle est passionnée par l'écriture, le développement de logiciels intéressants et les voyages à travers le monde (à travers des documentaires).

Plus de Kadeisha Kean

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner