arrays java 8 stream class
Java 8 est une version majeure de l'histoire de Java. Ce didacticiel explique diverses modifications apportées aux tableaux dans Java 8, comme la classe Streams et le tri parallèle:
De nombreuses nouvelles fonctionnalités ont été introduites dans cette version, comme déjà discuté dans notre précédent tutoriel sur «Java 8 Features». Apprenons-en davantage sur la classe de flux Java 8 et la méthode de tri parallèle.
=> Regardez la série de formation Java simple ici.
Ce que vous apprendrez:
Tableaux dans Java 8
Java8 a introduit quelques fonctionnalités spécifiquement liées aux tableaux.
Il comprend:
- Flux pour les tableaux
- Tri parallèle
Dans ce didacticiel, nous aborderons en détail ces deux fonctionnalités de Java 8.
Flux Java 8
Java 8 a ajouté une classe de flux pour les tableaux qui améliore la lisibilité ainsi que l'efficacité des tableaux. La conversion de tableaux en flux augmente également les performances globales du programme.
En plus de cela, vous pouvez également utiliser les différentes méthodes de l'API Stream qui peuvent simplifier le mappage et les actions de filtrage sur les tableaux.
Les surcharges de méthode suivantes peuvent être utilisées pour convertir un tableau en un flux .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
Le programme suivant montre l'implémentation de l'utilisation de flux avec des tableaux. Ce programme montre une comparaison de l'approche itérative et de l'approche Streams. Plus tard, la somme des éléments du tableau est calculée à l'aide d'itération et de flux et la moyenne est calculée.
import java.util.Arrays; class Main { public static void main(String() args) { int intArray() = {5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100}; //calculate sum using iterative method int sum = 0; for (int i = 0; i System.out.print(e + ' ')); } }
Production:
La sortie ci-dessus montre l'itération moyenne et l'approche des flux. Comme les éléments sont moins nombreux, la moyenne est la même mais à mesure que les éléments du tableau augmentent, l'approche itérative devient plus lente.
L'exemple de programmation suivant montre comment un tableau est converti en flux entier, puis en utilisant la méthode map du flux pour mapper les éléments du tableau en valeurs aléatoires, puis ajouter ces éléments. Le programme alors imprime la somme de tous les éléments du flux d'entiers .
import java.util.Arrays; class Main { public static void main(String() args) { //declare array of ints int() ints = new int(100); //fill array with value 10 Arrays.fill(ints, 10); //maps array stream to random numbers and calculates sum of the elements int sum = Arrays.stream(ints) .map(i -> (int) (Math.random() * i)) .sum(); //print the sum System.out.println('The sum of the random array elements: ' + sum); } }
Production:
Nous avons utilisé la méthode map fournie par la classe Stream dans le programme ci-dessus. Nous avons également utilisé la méthode sum () qui ajoute les éléments dans le flux.
java passe le tableau à la méthode par référence
Java 8, méthode parallelSort ()
La méthode «parallelSort ()» est introduite dans Java 8. C'est une méthode de la classe java.util.Arrays. La méthode parallelSort est utilisée pour trier un tableau de manière parallèle. Il utilise l'approche de la fourche et de la jointure dans laquelle les baies sont divisées en unités plus petites jusqu'à ce que chaque unité soit facilement gérable puis triée individuellement.
Ensuite, les plus petites unités sont réunies et toute cette opération se déroule en parallèle. L'un des principaux avantages de cette méthode parallelSort est qu'elle utilise le multithreading, ce qui rend le tri plus rapide et efficace.
La méthode parallelSort () présente les surcharges suivantes:
public static void parallelSort (Object obj())
Le prototype de méthode ci-dessus est utilisé pour trier un tableau dans l'ordre croissant.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
La surcharge ci-dessus est utilisée pour trier les éléments dans la plage spécifiée de «fromIndex» à «toIndex» dans le tableau.
Le programme Java suivant illustre la méthode parallelSort pour trier un tableau.
import java.util.Arrays; public class Main { public static void main(String() args) { // Creating an array int numArray() = { 54,34,25,13,65,37,85,47,26 }; // print the original Array System.out.print('Original Unsorted Array: '); // iterate the array using streams Arrays.stream(numArray) .forEach(num ->System.out.print(num + ' ')); System.out.println(); // Using parallelSort() method to sort array Arrays.parallelSort(numArray); // Print sorted Array System.out.print('Array sorted using parallelSort: '); Arrays.stream(numArray) .forEach(num->System.out.print(num + ' ')); } }
Production:
Dans le programme ci-dessus, le tableau d'entrée est trié à l'aide d'une méthode parallelSort et la sortie est imprimée.
Le programme suivant compare les deux méthodes de tri fournies par la classe Arrays, c'est-à-dire la méthode sort () qui est une méthode de tri linéaire et parallelSort (). Ce programme compare le temps nécessaire à chaque méthode pour trier un tableau . Le temps est calculé pour chaque itération.
import java.util.Arrays; import java.util.Random; public class Main { public static void main(String() args) { // Create an array int numArray() = new int(100); System.out.println('Iteration#' + ' ' + 'Serial Sort :Time(in ns)' + ' ' + 'Parallel Sort :Time(in ns)'); // Iterating Loop till i = 1000 // with interval of 10 for (int i = 0; i <100; i += 10) { System.out.print(' ' + (i / 10 + 1) + ' '); // Array generation using random function Random rand = new Random(); for (int j = 0; j < 100; j++) { numArray(j) = rand.nextInt(); } // Arrays.sort() method: Start and End Time long startTime = System.nanoTime(); // Call Serial Sort method Arrays.sort Arrays.sort(numArray); long endTime = System.nanoTime(); // Print Serial Sort results System.out.print((endTime - startTime) + ' '); // Arrays.parallelSort() start and end time startTime = System.nanoTime(); // call Parallel Sort method Arrays.parallelSort Arrays.parallelSort(numArray); endTime = System.nanoTime(); // Print Parallel Sort results System.out.println(' ' + (endTime - startTime)); System.out.println(); } } }
Production:
La sortie ci-dessus montre la comparaison du temps pris par les méthodes sort et parallelSort pour chaque itération. Vous pouvez voir la différence claire entre les performances de la méthode sort et parallelSort avec la méthode parallelSort carénage bien mieux que le tri.
Questions fréquemment posées
Q # 1) Qu'est-ce que Arrays Stream en Java?
Répondre: Il s'agit de la méthode stream de la classe Arrays. Cette méthode stream (T () array) renvoie un flux séquentiel du tableau.
Q # 2) Qu'est-ce que Stream () en Java?
Répondre: Stream () en Java a été introduit pour la première fois dans Java 8. La classe Stream se compose de l'API utilisée pour traiter les objets de collection, y compris les tableaux.
Q # 3) Comment fonctionne Java Stream?
Répondre: Les API du flux Java ont un mécanisme qui peut convertir des collections telles que ArrayList, Arrays, etc. en flux. Ils traitent également chaque élément de ces flux en parallèle à l'aide de diverses méthodes fournies et transmettent les résultats.
Q # 4) Quel est le but de la méthode MAP de Stream dans Java 8?
Répondre: La méthode map appartient à la classe java.util.stream.Streams. La méthode map applique une fonction à chaque élément d'un flux ou le mappe à une valeur différente et le transforme.
Q # 5) Stream est-il plus rapide que pour Java en boucle?
Répondre: Oui, en particulier les flux parallèles. Par exemple, la méthode parallelSort de la classe Arrays qui utilise des flux parallèles est plus rapide que la méthode de tri séquentiel fournie par la classe Arrays.
Conclusion
Streams en Java est une nouvelle fonctionnalité incluse depuis Java 8. Les flux fournissent une chaîne API dont les méthodes peuvent être utilisées sur des collections en Java. Dans ce didacticiel, nous avons vu des méthodes de flux qui fonctionnent sur des tableaux Java. Nous avons également vu les autres fonctionnalités qui ont été ajoutées aux tableaux Java dans l'édition Java 8.
L'un d'eux est stream tandis que l'autre est la méthode parallelSort qui trie un tableau de manière parallèle. Cette méthode est plus rapide que le tri par méthode linéaire, ce qui était évident dans le programme où nous avons comparé les deux méthodes.
Lire aussi = >> Modifications de l'interface dans Java 8
=> Visitez ici pour la série exclusive de didacticiels de formation Java.
lecture recommandée
- Types de données Java, boucles, tableaux, commutateurs et assertions
- Méthode MongoDB Sort () avec exemples
- Java Copy Array: Comment copier / cloner un tableau en Java
- Java Generic Array - Comment simuler des tableaux génériques en Java?
- Tableaux multidimensionnels en Java (tableaux 2D et 3D en Java)
- Tutoriel sur l'interface Java et la classe abstraite avec des exemples
- Comment trier un tableau en Java - Tutoriel avec des exemples
- Qu'est-ce qu'un mot-clé statique en Java?