L'API
Stream dans Java 8 est utilisé pour travailler avec les collections, pour pouvoir écrire le code dans le style fonctionnel. Grâce à sa simplicité
Stream est devenu très populaire entre les programmeurs. Selon la description officielle, la bibliothèque « Java.util.stream » - nous permet de faire plusieurs opérations dans le style fonctionnel avec des collections d'éléments, tels comme les transformations de
MapReduce, etc. L'API contient les opérations « intermédiaires », comme
Stream.map ou
Stream.filter, mais aussi les opérations « finales » comme
Stream.forEach ou
Stream.reduce. L'opération « intermédiaire » ne serait jamais exécutées avant l'opération « finale » (p.e.
Stream.map ne serait pas exécutée avant
Stream.reduce, mémé si vous le mettez avant dans le code). Un tel comportement s'appelle LAZY.
Une autre grande caractéristique de l'API
Stream c'est la parallélisation des sources -
parallelStream () qui vient utilisée pour améliorer les performances pour traiter des grandes quantités de données. Les flux parallèles peuvent accélérer l'exécution pour certains types de transactions. Je les utilise quand je sais que la collection est trop grande pour être gérée avec «
ForkJoin. » Plus d'informations sur la bibliothèque
ForkJoin peut lire ici:
http://www.baeldung.com/java-fork-join.
Retournons à nos moutons et nous considérerons un exemple pratique. Un exemple simple de recherche d'un valeur min et d'un valeur max dans une collection.
ArrayList testValues = new ArrayList();
testValues.add(0,15);
testValues.add(1,1);
testValues.add(2,2);
testValues.add(3,100);
testValues.add(4,50);
Optional maxValue = testValues.stream().max(Integer::compareTo);
System.out.println("MaxValue="+maxValue);
Optional minValue = testValues.stream().min(Integer::compareTo);
System.out.println("MinValue="+minValue);