arrays java 8 stream class
Java 8 è stata una delle principali versioni nella storia di Java. Questo tutorial spiega varie modifiche agli array in Java 8 come Streams Class e Parallel Sorting:
Molte nuove funzionalità sono state introdotte in questa versione, come già discusso nel nostro precedente tutorial su 'Funzionalità Java 8'. Impariamo a conoscere Java 8 Stream Class e Parallel Sorting Method.
=> Guarda qui la serie di formazione su Java semplice.
Cosa imparerai:
Array in Java 8
Java8 ha introdotto alcune funzionalità specificamente correlate agli array.
Include:
- Stream per array
- Ordinamento parallelo
In questo tutorial, discuteremo in dettaglio queste due funzionalità di Java 8.
Java 8 Stream
Java 8 ha aggiunto una classe stream per gli array che migliora la leggibilità e l'efficienza degli array. La conversione di array in stream aumenta anche le prestazioni complessive del programma.
Oltre a ciò, puoi anche utilizzare i vari metodi dell'API Stream che possono semplificare la mappatura e le azioni di filtro sugli array.
I seguenti overload del metodo possono essere usati per convertire una matrice in un flusso .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
Il seguente programma mostra l'implementazione dell'utilizzo di flussi con array. Questo programma mostra un confronto tra l'approccio iterativo e l'approccio Streams. Successivamente, la somma degli elementi nell'array viene calcolata utilizzando Iteration e Streams e viene calcolata la 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 + ' ')); } }
Produzione:
L'output sopra mostra l'iterazione media e l'approccio dei flussi. Poiché gli elementi sono inferiori, la media è la stessa ma con l'aumento degli elementi nell'array, l'approccio iterativo diventa più lento.
Il prossimo esempio di programmazione mostra come un array viene convertito in un flusso intero e quindi utilizzando il metodo map del flusso per mappare gli elementi dell'array a valori casuali e quindi aggiungere questi elementi. Allora il programma stampa la somma di tutti gli elementi nel flusso intero .
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); } }
Produzione:
Abbiamo utilizzato il metodo map fornito dalla classe Stream nel programma precedente. Abbiamo anche utilizzato il metodo sum () che aggiunge gli elementi nel flusso.
gateway predefinito non trovato windows 10
Metodo Java 8 parallelSort ()
Il metodo 'parallelSort ()' è stato introdotto in Java 8. È un metodo della classe java.util.Arrays. Il metodo parallelSort viene utilizzato per ordinare un array in modo parallelo. Utilizza l'approccio fork and join in cui gli array vengono biforcati in unità più piccole fino a quando ogni unità è facilmente gestibile e quindi ordinata individualmente.
Quindi le unità più piccole vengono unite insieme e l'intera operazione avviene in parallelo. Un vantaggio principale di questo metodo parallelSort è che utilizza il multithreading, rendendo così l'ordinamento più veloce ed efficiente.
Il metodo parallelSort () ha i seguenti overload:
public static void parallelSort (Object obj())
Il prototipo del metodo precedente viene utilizzato per ordinare un array in ordine crescente.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
L'overload di cui sopra viene utilizzato per ordinare gli elementi nell'intervallo specificato da 'fromIndex' a 'toIndex' nell'array.
Il seguente programma Java mostra il metodo parallelSort per ordinare un array.
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 + ' ')); } }
Produzione:
Nel programma precedente, l'array di input viene ordinato utilizzando un metodo parallelSort e l'output viene stampato.
Il programma successivo confronta i due metodi di ordinamento forniti dalla classe Arrays, ovvero il metodo sort () che è un metodo di ordinamento lineare e parallelSort (). Questo programma confronta il tempo impiegato da ciascun metodo per ordinare un array . Il tempo viene calcolato per ogni iterazione.
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(); } } }
Produzione:
L'output sopra mostra il confronto del tempo impiegato dai metodi sort e parallelSort per ciascuna iterazione. Puoi vedere la chiara differenza tra le prestazioni del metodo sort e parallelSort con il metodo parallelSort molto meglio di sort.
Domande frequenti
D # 1) Cos'è Arrays Stream in Java?
Risposta: Questo è il metodo stream della classe Arrays. Questo metodo stream (T () array) restituisce un flusso sequenziale dall'array.
D # 2) Che cos'è Stream () in Java?
Risposta: Stream () in Java è stato introdotto per la prima volta in Java 8. La classe Stream è costituita dall'API utilizzata per elaborare gli oggetti di raccolta, inclusi gli array.
D # 3) Come funziona Java Stream?
Risposta: Le API del flusso Java hanno un meccanismo che può convertire raccolte come ArrayList, Arrays, ecc. In streaming. Elaborano inoltre ogni elemento di questi flussi in parallelo utilizzando vari metodi forniti e passano i risultati.
D # 4) Qual è lo scopo del metodo MAP di Stream in Java 8?
Risposta: Il metodo map appartiene alla classe java.util.stream.Streams. Il metodo map applica una funzione a ciascun elemento di un flusso o lo mappa su un valore diverso e lo trasforma.
D # 5) Stream è più veloce di for loop Java?
Risposta: Sì, soprattutto i flussi paralleli. Per esempio, il metodo parallelSort della classe Arrays che utilizza flussi paralleli è più veloce del metodo di ordinamento sequenziale fornito dalla classe Arrays.
Conclusione
Streams in Java è una nuova funzione inclusa a partire da Java 8. Streams fornisce un'API di stringa i cui metodi possono essere utilizzati sulle raccolte in Java. In questo tutorial, abbiamo visto metodi di flusso che funzionano su array Java. Abbiamo anche visto le altre funzionalità aggiunte agli array Java nell'edizione Java 8.
Uno di questi è stream mentre l'altro è il metodo parallelSort che ordina un array in modo parallelo. Questo metodo è più veloce dell'ordinamento del metodo lineare, che era evidente nel programma in cui abbiamo confrontato entrambi i metodi.
Leggi anche = >> Modifiche all'interfaccia in Java 8
=> Visita qui per l'esclusiva serie di tutorial di formazione Java.
Lettura consigliata
- Tipi di dati Java, loop, array, switch e asserzioni
- Metodo MongoDB Sort () con esempi
- Java Copy Array: come copiare / clonare un array in Java
- Java Generic Array - Come simulare array generici in Java?
- Array multidimensionali in Java (array 2d e 3d in Java)
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi
- Come ordinare un array in Java - Tutorial con esempi
- Qual è la parola chiave statica in Java?