Première expérience du flux
Stream est une caractéristique importante des collections d'opérations dans Java 8. Voyons d'abord comment Stream est défini en Java:
"Une séquence d'éléments prenant en charge les opérations d'agrégats séquentielles et parallèles."
Interprétons la phrase ci-dessus:
1. Stream est une collection d'éléments, ce qui fait ressembler le flux à Iterator;
2. Il peut prendre en charge les opérations d'agrégation du flux d'origine en séquence et parallèle.
Il existe de nombreuses façons de créer un flux, et il existe plusieurs autres façons de créer une collection en plus des plus courantes.
Liste pour diffuser
Liste hérite de l'interface de collection et la collection fournit la méthode Stream ().
List <Integer> list = lists.newArrayList (1, 2, 3); Stream <Integer> Stream = list.Stream ();
Tableau à diffuser
Pour les tableaux, les tableaux fournissent la méthode Stream ().
String [] arr = new String [] {"A", "B", "C"}; Stream <string> Stream = Arrays.Stream (arr); Carte pour diffuser
La carte n'est pas une séquence, pas une collection, et il n'y a aucun moyen de la convertir directement en flux (). Mais EntrySet () est défini, et il peut être converti.
Map <string, objet> map = maps.newhashmap (); stream <entrée <string, objet >> stream = map.entryset (). Stream ();
Créer un flux directement
Stream fournit également une API pour générer directement un flux, qui peut être à peu près compris comme une liste. Parce que l'interne est implémenté par un tableau.
Stream <Integer> Integerstream = Stream.of (1, 2, 3);
Lire le flux du fichier
Ceux qui ont utilisé Linux admireront les symboles de tuyaux sur la ligne de commande, et un symbole de tuyau peut être traité en continu. Des fonctions similaires peuvent être implémentées lors de la lecture de fichiers en Java.
long uniquewords = 0; try (stream <string> lines = files.lines (paths.get ("data.txt"), charset.defaultcharset ())) {uniquewords = lines.flatmap (l -> arrays.stream (l.split ("))) .Distinct () .Count ();} catch (ioexception e) {/} Générer des fonctions de flux infini à travers
Stream fournit itérate pour générer une séquence infinie, une séquence infinie basée sur la valeur initiale. Vous pouvez utiliser Lambda pour définir les règles de génération de séquence, telles que l'ajout de 2 à chaque fois.
Stream.iterate (0, n -> n + 2) .limit (10) .ForEach (System.out :: println);
Par exemple, séquence de fibonacci
Stream.iterate (new int [] {0, 1}, t -> new int [] {t [1], t [0] + t [1]}) .limit (20) .map (t -> t [0]) .ForEach (System.out :: println); Stream fournit également une autre méthode de génération pour générer des séquences. Reçoit une fonction de séquence générée par l'utilisateur IntSupplier.
IntSupplier fib = new intSupplier () {private int promed = 0; Current int privé = 1; @Override public int getasint () {int oldprevious = this.previous; int nextValue = this.previous + this.current; this.previous = this.current; this.current = nextValue; Retour OldPrevious; }}; IntStream.GenERERE (FIB) .limit (10) .ForEach (System.out :: println);Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.