arrays java 8 stream class
Java 8 har varit en viktig version i Java-historien. Denna handledning förklarar olika ändringar av matriser i Java 8 som strömmar klass och parallell sortering:
Många nya funktioner introducerades i den här utgåvan som redan diskuterats i vår tidigare handledning om 'Java 8-funktioner'. Låt oss lära oss om Java 8 Stream Class och parallell sorteringsmetod.
=> Se upp den enkla Java-träningsserien här.
Vad du kommer att lära dig:
Arrays i Java 8
Java8 introducerade några funktioner som är specifikt relaterade till matriser.
Det inkluderar:
- Strömmar för arrays
- Parallell sortering
I denna handledning kommer vi att diskutera dessa två funktioner i Java 8 i detalj.
Java 8 Stream
Java 8 har lagt till en strömklass för matriser som förbättrar läsbarheten liksom effektiviteten hos matriser. Om du konverterar matriser för att strömma ökar också programmets totala prestanda.
Utöver detta kan du också använda olika Stream API-metoder som kan förenkla mappning och filtreringsåtgärder på matriser.
Följande metodöverbelastning kan användas för att konvertera en matris till en ström .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
Följande program visar implementeringen av att använda strömmar med matriser. Detta program visar en jämförelse mellan Iterativ och Streams-metod. Senare beräknas summan av elementen i matrisen med hjälp av Iteration och Streams och medelvärdet beräknas.
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 + ' ')); } }
Produktion:
Ovanstående output visar den genomsnittliga iterationen och strömmarna. Eftersom elementen är mindre är genomsnittet detsamma, men när elementen i arrayen ökar blir iterativt tillvägagångssätt långsammare.
Nästa programmeringsexempel visar hur en matris omvandlas till heltalström och sedan använder strömmens kartmetod för att mappa element i matrisen till slumpmässiga värden och sedan lägga till dessa element. Programmet då skriver ut summan av alla element i helflödet .
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); } }
Produktion:
Vi har använt kartmetoden som tillhandahålls av Stream-klassen i ovanstående program. Vi använde också metoden sum () som lägger till elementen i strömmen.
frågor och svar om kvalitetssäkringsintervju pdf
Java 8 parallelSort () -metod
Metoden ”parallelSort ()” introduceras i Java 8. Det är en metod för klassen java.util.Arrays. Metoden parallelSort används för att sortera en matris parallellt. Den använder sig av gaffel- och kopplingsmetoden där matriserna delas in i mindre enheter tills varje enhet är lätt att hantera och sedan sorteras individuellt.
Sedan förenas de mindre enheterna och hela operationen sker parallellt. En av de främsta fördelarna med denna parallelSort-metod är att den använder multithreading och därmed gör sorteringen snabbare och effektivare.
Metoden parallelSort () har följande överbelastningar:
public static void parallelSort (Object obj())
Ovanstående metodprototyp används för att sortera en matris i stigande ordning.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
Ovanstående överbelastning används för att sortera element i det angivna intervallet från 'frånIndex' till 'tillIndex' i matrisen.
Följande Java-program visar parallelSort-metoden för att sortera en matris.
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 + ' ')); } }
Produktion:
I ovanstående program sorteras inmatningsmatrisen med hjälp av en parallelSort-metod och utskriften skrivs ut.
Nästa program jämför de två sorteringsmetoderna som tillhandahålls av Arrays-klass, dvs. metoden sort () som är en linjär sorterings- och parallelSort () -metod. Detta program jämför den tid det tar för varje metod att sortera en matris . Tiden beräknas för varje iteration.
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(); } } }
Produktion:
Ovanstående utdata visar jämförelsen av den tid det tar med sorterings- och parallelSort-metoderna för varje iteration. Du kan se den tydliga skillnaden mellan prestanda för sort och parallelSort-metod med parallelSort-metoden som passar mycket bättre än sortering.
Vanliga frågor
F # 1) Vad är Arrays Stream i Java?
Svar: Detta är strömmetoden i arrays-klassen. Denna metodström (T () -matris) returnerar en sekventiell ström från matrisen.
F # 2) Vad är Stream () i Java?
Svar: Stream () i Java introducerades först i Java 8. Stream-klass består av API som används för bearbetning av samlingsobjekt inklusive matriser.
F # 3) Hur fungerar Java Stream?
Svar: API: er för Java-ström har en mekanism som kan konvertera samlingar som ArrayList, Arrays, etc. till stream. De bearbetar också varje element i dessa strömmar parallellt med olika tillhandahållna metoder och passerar resultat.
F # 4) Vad är syftet med MAP-metoden för Stream i Java 8?
Svar: Kartmetoden tillhör klassen java.util.stream.Streams. Kartmetoden tillämpar en funktion på varje element i en ström eller kartlägger den till ett annat värde och transformerar den.
F # 5) Är Stream snabbare än för Java-loop?
Svar: Ja, särskilt de parallella strömmarna. Till exempel, parallelSort-metoden i Arrays-klassen som använder parallella strömmar är snabbare än den sekventiella sorteringsmetoden som tillhandahålls av Arrays-klassen.
Slutsats
Strömmar i Java är en ny funktion som ingår i Java 8. Strömmar ger ett sträng-API vars metoder kan användas på samlingar i Java. I den här handledningen har vi sett strömningsmetoder som fungerar på Java-matriser. Vi har också sett de andra funktionerna som lagts till Java-arrays i Java 8-upplagan.
En av dem är ström medan den andra är parallelSort-metoden som sorterar en array parallellt. Denna metod är snabbare än den linjära metodsorten, vilket framgick i programmet där vi jämförde båda metoderna.
Läs också = >> Gränssnittsändringar i Java 8
=> Besök här för den exklusiva Java-utbildningsserien.
Rekommenderad läsning
- Java datatyper, loopar, arrays, switch och påståenden
- MongoDB Sort () -metod med exempel
- Java Copy Array: Hur man kopierar / klonar en array i Java
- Java Generic Array - Hur man simulerar generiska arrays i Java?
- Flerdimensionella arrayer i Java (2d och 3d arrays i Java)
- Java-gränssnitt och abstrakt klasshandledning med exempel
- Hur man sorterar en matris i Java - Handledning med exempel
- Vad är statisk nyckelord i Java?