arrays java 8 stream class
Java 8 ha estat una versió important de la història de Java. Aquest tutorial explica diversos canvis a les matrius de Java 8, com ara la classificació de corrents i l'ordenació en paral·lel:
En aquesta versió s'han introduït moltes funcions noves, com ja s'ha comentat en el nostre anterior tutorial sobre 'Funcions de Java 8'. Aprenem sobre Java 8 Stream Class i el mètode d’ordenació en paral·lel.
=> Vigileu aquí les sèries de formació Java senzilles.
Què aprendreu:
Matrius a Java 8
Java8 va introduir algunes funcions relacionades específicament amb matrius.
Inclou:
- Corrents per a matrius
- Ordenació en paral·lel
En aquest tutorial, parlarem detalladament d’aquestes dues funcions de Java 8.
Corrent de Java 8
Java 8 ha afegit una classe de flux per a matrius que millora la llegibilitat i l'eficiència de matrius. La conversió de matrius en flux també augmenta el rendiment general del programa.
A més d’això, també podeu utilitzar els diversos mètodes de l’API Stream que poden simplificar el mapatge i les accions de filtratge en matrius.
El següent mètode de sobrecàrregues es pot utilitzar per convertir una matriu en un flux .
Stream stream(T[] array) IntStream stream(int[] array) LongStream stream(long[] array) DoubleStream stream(double[] array)
El programa següent mostra la implementació de l’ús de corrents amb matrius. Aquest programa mostra una comparació de l'enfocament iteratiu i l'enfocament de corrents. Més tard, la suma dels elements de la matriu es calcula mitjançant la iteració i els fluxos i es calcula la mitjana.
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 + ' ')); } }
Sortida:
La sortida anterior mostra la iteració mitjana i l'enfocament dels fluxos. Com que els elements són menors, la mitjana és la mateixa, però a mesura que augmenten els elements de la matriu, l'enfocament iteratiu es fa més lent.
El següent exemple de programació mostra com es converteix una matriu en flux enter i, a continuació, s'utilitza el mètode de mapa del flux per assignar elements de la matriu a valors aleatoris i, a continuació, afegir aquests elements. El programa llavors imprimeix la suma de tots els elements del flux enter .
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); } }
Sortida:
Hem utilitzat el mètode de mapa que proporciona la classe Stream al programa anterior. També hem utilitzat el mètode sum () que afegeix els elements del flux.
els millors netejadors de registre gratuïts per a Windows 10
Mètode Java 8 parallelSort ()
El mètode “parallelSort ()” s’introdueix a Java 8. És un mètode de la classe java.util.Arrays. El mètode parallelSort s’utilitza per ordenar una matriu de manera paral·lela. Utilitza l'enfocament de forquilla i unió en el qual les matrius es bifurquen en unitats més petites fins que cada unitat sigui fàcilment manejable i es classifiqui individualment.
Aleshores, les unitats més petites s’uneixen i tota aquesta operació passa en paral·lel. Un dels principals avantatges d’aquest mètode parallelSort és que utilitza multithreading, cosa que fa que l’ordenació sigui més ràpida i eficient.
El mètode parallelSort () té les següents sobrecàrregues:
public static void parallelSort (Object obj[])
El prototip del mètode anterior s'utilitza per ordenar una matriu en ordre ascendent.
public static void parallelSort (Object obj[], int fromIndex, int toIndex)
La sobrecàrrega anterior s'utilitza per ordenar els elements de l'interval especificat des de 'fromIndex' a 'toIndex' de la matriu.
El següent programa Java mostra el mètode parallelSort per ordenar una matriu.
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 + ' ')); } }
Sortida:
Al programa anterior, la matriu d'entrada s'ordena mitjançant un mètode parallelSort i s'imprimeix la sortida.
El següent programa compara els dos mètodes d’ordenació proporcionats per la classe Arrays, és a dir, el mètode sort () que és un mètode d’ordenació lineal i parallelSort (). Aquest programa compara el temps que ha trigat cada mètode a ordenar una matriu . El temps es calcula per a cada iteració.
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(); } } }
Sortida:
La sortida anterior mostra la comparació del temps que prenen els mètodes sort i parallelSort per a cada iteració. Podeu veure la clara diferència entre el rendiment de sort i el mètode parallelSort amb el mètode parallelSort carregat molt millor que sort.
Preguntes freqüents
P # 1) Què és Arrays Stream a Java?
Resposta: Aquest és el mètode de flux de la classe Arrays. Aquest flux de mètode (matriu T []) retorna un flux seqüencial de la matriu.
Q # 2) Què és Stream () a Java?
Resposta: Stream () a Java es va introduir per primera vegada a Java 8. La classe Stream consisteix en l'API que s'utilitza per processar objectes de col·lecció, incloses matrius.
P # 3) Com funciona Java Stream?
Resposta: Les API del flux Java tenen un mecanisme que permet convertir col·leccions com ArrayList, Arrays, etc. en flux. També processen cada element d’aquests corrents en paral·lel mitjançant diversos mètodes proporcionats i transmeten resultats.
Q # 4) Quin és el propòsit del mètode MAP de Stream a Java 8?
Resposta: El mètode del mapa pertany a la classe java.util.stream.Streams. El mètode del mapa aplica una funció a cada element d’un flux o el mapea a un valor diferent i el transforma.
P # 5) La transmissió és més ràpida que per al bucle Java?
Resposta: Sí, sobretot els corrents paral·lels. Per exemple, el mètode parallelSort de la classe Arrays que utilitza fluxos paral·lels és més ràpid que el mètode d'ordenació seqüencial proporcionat per la classe Arrays.
Conclusió
Els fluxos a Java són una nova característica inclosa des de Java 8. Els fluxos proporcionen una API de cadena els mètodes de la qual es poden utilitzar a les col·leccions de Java. En aquest tutorial, hem vist mètodes de transmissió que funcionen en matrius Java. També hem vist les altres funcions que es van afegir a les matrius Java a l'edició Java 8.
Un d’ells és stream mentre que l’altre és el mètode parallelSort que ordena una matriu de manera paral·lela. Aquest mètode és més ràpid que el mètode lineal de classificació, cosa que va ser evident al programa on vam comparar tots dos mètodes.
Llegiu també = >> Canvis d'interfície a Java 8
=> Visiteu aquí la sèrie exclusiva de cursos de formació de Java.
Lectura recomanada
- Tipus de dades, bucles, matrius, commutadors i assercions de Java
- MongoDB Sort () Mètode amb exemples
- Java Copy Array: Com copiar / clonar un array a Java
- Matriu genèrica de Java: com simular matrius genèrics a Java?
- Arrays multidimensionals a Java (Arrays 2d i 3d a Java)
- Interfície Java i tutoria de classes abstractes amb exemples
- Com ordenar una matriu a Java: tutorial amb exemples
- Què és la paraula clau estàtica a Java?