arrays java 8 stream class
Java 8 je glavno izdanje u povijesti Jave. Ovaj vodič objašnjava razne promjene u nizovima u Javi 8 poput klase tokova i paralelnog sortiranja:
Mnogo novih značajki predstavljeno je u ovom izdanju, kao što je već raspravljeno u našem prethodnom vodiču o “Značajkama Java 8”. Naučimo o Java 8 Stream Classu i paralelnom načinu sortiranja.
=> Ovdje pripazite na jednostavnu seriju Java treninga.
Što ćete naučiti:
Nizovi u Javi 8
Java8 je predstavio nekoliko značajki posebno povezanih s nizovima.
Uključuje:
- Potoci za nizove
- Paralelno sortiranje
U ovom uputstvu detaljno ćemo razmotriti ove dvije značajke Java 8.
Java 8 Stream
Java 8 dodala je klasu stream za nizove koja poboljšava čitljivost, kao i učinkovitost nizova. Pretvaranje nizova u stream također povećava ukupnu izvedbu programa.
Uz to, također možete koristiti razne metode API-ja Stream koje mogu pojednostaviti mapiranje i radnje filtriranja na nizovima.
Sljedeća metoda preopterećenja mogu se koristiti za pretvaranje niza u tok .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)Sljedeći program prikazuje provedbu korištenja streamova s nizovima. Ovaj program prikazuje usporedbu iterativnog pristupa i pristupa Streams. Kasnije se zbroj elemenata u nizu izračunava pomoću Iteracije i strujanja i izračunava se prosjek.
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 + ' ')); } } Izlaz:

Gore navedeni izlaz prikazuje prosječnu iteraciju i pristup strujanja. Kako je elemenata manje, prosjek je isti, ali kako se elementi u nizu povećavaju, iterativni pristup postaje sporiji.
Sljedeći primjer programiranja pokazuje kako se niz pretvara u cjelobrojni tok, a zatim pomoću metode map toka mapira elemente niza u slučajne vrijednosti, a zatim dodaje te elemente. Program onda ispisuje zbroj svih elemenata u cijelobrojnom toku .
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); } } Izlaz:

Koristili smo metodu mape koju pruža klasa Stream u gornjem programu. Također smo koristili metodu sum () koja dodaje elemente u streamu.
c ++ otkrivanje curenja memorije
Java 8 paralelna metoda sortiranja ()
Metoda “paralelno sortiranje ()” uvedena je u Javi 8. To je metoda klase java.util.Arrays. Paralelna metoda sortiranja koristi se za paralelno sortiranje niza. Koristi pristup fork and join (spajanje vilicom) u kojem se nizovi račvaju u manje jedinice sve dok se jedinicom ne može lako upravljati i potom sortira pojedinačno.
Tada se spajaju manje jedinice i cijela se ta operacija događa paralelno. Jedna od glavnih prednosti ove metode paralelnog sortiranja je ta što koristi višestruko uvođenje niti, što sortiranje čini bržim i učinkovitijim.
Metoda paralelnog sortiranja () ima sljedeća preopterećenja:
public static void parallelSort (Object obj())Gornji prototip metode koristi se za sortiranje niza u rastućem redoslijedu.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)Gornje preopterećenje koristi se za sortiranje elemenata u navedenom rasponu od ‘fromIndex’ do ‘toIndex’ u polju.
Sljedeći Java program prikazuje metodu paralelnog sortiranja za sortiranje niza.
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 + ' ')); } } Izlaz:

U gore navedenom programu ulazni niz sortiran je metodom paralelnog sortiranja i ispisan je izlaz.
Sljedeći program uspoređuje dvije metode sortiranja koje pruža klasa Arrays, tj. Metoda sort () koja je linearna metoda sortiranja i parallelSort (). Ovaj program uspoređuje vrijeme koje je svakoj metodi potrebno za sortiranje niza . Vrijeme se izračunava za svaku iteraciju.
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(); } } } Izlaz:

Gornji izlaz prikazuje usporedbu vremena provedenog metodama sortiranja i paralelnog sortiranja za svaku iteraciju. Možete vidjeti jasnu razliku između izvedbe metode sortiranja i paralelnog sortiranja s metodom paralelnog sortiranja koja je mnogo bolja od sortiranja.
Često postavljana pitanja
P # 1) Što je Arrays Stream u Javi?
Odgovor: Ovo je stream metoda klase Arrays. Ovaj tok metode (niz T ()) vraća sekvencijalni tok iz niza.
P # 2) Što je Stream () na Javi?
Odgovor: Stream () na Javi prvi je put predstavljen na Javi 8. Klasa Stream sastoji se od API-ja koji se koristi za obradu objekata kolekcije, uključujući nizove.
P # 3) Kako funkcionira Java Stream?
Odgovor: API-ji Java stream-a imaju mehanizam koji može pretvoriti zbirke poput ArrayList, Arrays itd. U stream. Oni također paralelno obrađuju svaki element tih tokova koristeći različite metode i prosljeđuju rezultate.
P # 4) Koja je svrha MAP metode Stream u Javi 8?
Odgovor: Metoda mape pripada klasi java.util.stream.Streams. Metoda mapi primjenjuje funkciju na svaki element toka ili je preslikava u drugu vrijednost i transformira.
P # 5) Je li Stream brži nego za Java petlju?
Odgovor: Da, posebno paralelni tokovi. Na primjer, metoda parallelSort klase Arrays koja koristi paralelne tokove brža je od metode sekvencijalnog sortiranja koju nudi klasa Arrays.
Zaključak
Potoci u Javi nova je značajka koja je uključena od Jave 8. Potoci pružaju API niza čije se metode mogu koristiti na kolekcijama na Javi. U ovom smo uputstvu vidjeli metode strujanja koje rade na Java nizovima. Također smo vidjeli i druge značajke koje su dodane Java poljima u izdanju Java 8.
Jedan od njih je stream, dok je drugi metoda parallelSort koja sortira niz na paralelan način. Ova metoda je brža od linearne metode sortiranja, što je bilo vidljivo u programu u kojem smo usporedili obje metode.
Također pročitajte = >> Promjene sučelja u Javi 8
=> Posjetite ovdje za ekskluzivnu seriju udžbenika za Java.
Preporučena literatura
- Java tipovi podataka, petlje, nizovi, prekidači i tvrdnje
- MongoDB metoda sortiranja () s primjerima
- Java Copy Array: Kako kopirati / klonirati niz u Javi
- Java generički niz - kako simulirati generičke nizove u Javi?
- Multidimenzionalni nizovi u Javi (2d i 3d nizovi u Javi)
- Java sučelje i udžbenik klase sažetak sa primjerima
- Kako sortirati niz u Javi - Vodič sa primjerima
- Što je statična ključna riječ u Javi?