arrays java 8 stream class
Java 8 a fost o versiune majoră în istoria Java. Acest tutorial explică diferite modificări ale matricilor în Java 8, cum ar fi clasarea fluxurilor și sortarea în paralel:
Multe caracteristici noi au fost introduse în această versiune, așa cum am discutat deja în tutorialul nostru anterior despre „Caracteristici Java 8”. Să învățăm despre Java 8 Stream Class și metoda de sortare în paralel.
=> Urmăriți aici seria de antrenament Java simplă.
Ce veți învăța:
Matrice în Java 8
Java8 a introdus câteva caracteristici legate în mod specific de tablouri.
Include:
- Fluxuri pentru matrice
- Sortare paralelă
În acest tutorial, vom discuta în detaliu aceste două caracteristici ale Java 8.
Fluxul Java 8
Java 8 a adăugat o clasă de flux pentru tablouri care îmbunătățește lizibilitatea, precum și eficiența tablourilor. Conversia matricelor în flux crește, de asemenea, performanța generală a programului.
În plus, puteți utiliza și diversele metode API Stream care pot simplifica maparea și filtrarea acțiunilor pe tablouri.
Următoarea metodă de supraîncărcare poate fi utilizată pentru a converti o matrice într-un flux .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
Următorul program arată implementarea utilizării fluxurilor cu matrice. Acest program arată o comparație a abordării iterative și a abordării fluxurilor. Mai târziu, suma elementelor din matrice este calculată folosind Iteration și Streams și se calculează media.
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 + ' ')); } }
Ieșire:
Ieșirea de mai sus arată iterația medie și abordarea fluxurilor. Deoarece elementele sunt mai mici, media este aceeași, dar pe măsură ce elementele din matrice cresc, abordarea iterativă devine mai lentă.
Următorul exemplu de programare arată cum o matrice este convertită în flux întreg și apoi folosind metoda hărții fluxului pentru a mapa elementele matricei la valori aleatorii și apoi să adăugăm aceste elemente. Programul atunci tipărește suma tuturor elementelor din fluxul întreg .
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); } }
Ieșire:
Am folosit metoda hărții oferită de clasa Stream în programul de mai sus. De asemenea, am folosit metoda sum () care adaugă elementele din flux.
instrument de reparare software Windows 10
Metoda Java 8 parallelSort ()
Metoda „parallelSort ()” este introdusă în Java 8. Este o metodă a clasei java.util.Arrays. Metoda parallelSort este utilizată pentru a sorta o matrice în mod paralel. Folosește abordarea furculiței și îmbinării în care matricile sunt furcate în unități mai mici până când fiecare unitate este ușor de gestionat și apoi sortată individual.
Apoi unitățile mai mici sunt unite între ele și toată această operațiune are loc în paralel. Un avantaj principal al acestei metode parallelSort este că folosește multithreading, făcând astfel sortarea mai rapidă și eficientă.
Metoda parallelSort () are următoarele suprasarcini:
public static void parallelSort (Object obj())
Prototipul metodei de mai sus este folosit pentru a sorta o matrice în ordine crescătoare.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
Supraîncărcarea de mai sus este utilizată pentru a sorta elementele din intervalul specificat de la „fromIndex” la „toIndex” din matrice.
Următorul program Java demonstrează metoda parallelSort pentru a sorta o matrice.
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 + ' ')); } }
Ieșire:
În programul de mai sus, matricea de intrare este sortată utilizând o metodă parallelSort și ieșirea este tipărită.
Următorul program compară cele două metode de sortare furnizate de clasa Arrays, adică metoda sort () care este o metodă de sortare liniară și parallelSort (). Acest program compară timpul necesar fiecărei metode pentru a sorta o matrice . Timpul este calculat pentru fiecare iterație.
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(); } } }
Ieșire:
Ieșirea de mai sus arată comparația timpului luat de metodele sort și parallelSort pentru fiecare iterație. Puteți vedea diferența clară între performanța sort și metoda parallelSort cu metoda parallelSort carenat mult mai bine decât sort.
întrebări frecvente
Q # 1) Ce este Arrays Stream în Java?
Răspuns: Aceasta este metoda fluxului clasei Arrays. Acest flux de metodă (matricea T ()) returnează un flux secvențial din matrice.
Q # 2) Ce este Stream () în Java?
Răspuns: Stream () în Java a fost introdus pentru prima dată în Java 8. Clasa Stream constă din API-ul utilizat pentru procesarea obiectelor de colecție, inclusiv matrici.
Î. 3) Cum funcționează Java Stream?
Răspuns: API-urile fluxului Java au un mecanism care poate converti colecții precum ArrayList, Arrays etc. în flux. De asemenea, procesează fiecare element al acestor fluxuri în paralel folosind diferite metode furnizate și transmit rezultatele.
Q # 4) Care este scopul metodei MAP a fluxului în Java 8?
Răspuns: Metoda hărții aparține clasei java.util.stream.Streams. Metoda hărții aplică o funcție fiecărui element al unui flux sau o mapează la o valoare diferită și o transformă.
Q # 5) Este fluxul mai rapid decât pentru bucla Java?
Răspuns: Da, mai ales fluxurile paralele. De exemplu, metoda parallelSort a clasei Arrays care utilizează fluxuri paralele este mai rapidă decât metoda de sortare secvențială furnizată de clasa Arrays.
Concluzie
Fluxurile în Java este o caracteristică nouă inclusă din Java 8. Fluxurile oferă un API șir ale cărui metode pot fi utilizate pe colecții în Java. În acest tutorial, am văzut metode de flux care funcționează pe matrice Java. De asemenea, am văzut celelalte caracteristici care au fost adăugate matricilor Java în ediția Java 8.
Una dintre ele este flux, în timp ce cealaltă este metoda parallelSort care sortează o matrice în mod paralel. Această metodă este mai rapidă decât metoda liniară de sortare, ceea ce a fost evident în programul în care am comparat ambele metode.
Citiți și = >> Modificări de interfață în Java 8
=> Vizitați aici pentru seria exclusivă de instruire Java.
Lectură recomandată
- Tipuri de date Java, bucle, tablouri, comutatoare și afirmații
- Metoda MongoDB Sort () cu exemple
- Java Copy Array: Cum să copiați / clonați un array în Java
- Java Generic Array - Cum se pot simula matrici generice în Java?
- Matrice multidimensionale în Java (matrice 2d și 3d în Java)
- Interfață Java și tutorial de clasă abstractă cu exemple
- Cum să sortați o matrice în Java - Tutorial cu exemple
- Ce este cuvântul cheie static în Java?