Ein paralleler Stream ist ein paralleler Fluss von Objekten, der verschiedene Funktionen unterstützt, die dazu dienen können, die erwartete Ausgabe zu erzeugen. Paralleler Stream ist keine Datenstruktur, die es dem Benutzer ermöglicht, Eingaben aus Sammlungen, Arrays, Java-Eingabe- und Ausgabe-APIs einzugeben. Der parallele Stream ändert das tatsächliche Verhalten der Funktionalität nicht, kann jedoch die Ausgabe basierend auf dem angewendeten Filter (Pipeline) bereitstellen. Parallel Stream ist Teil der Java-Funktionsprogrammierung, die nach der Java 8-Version eingeführt wird. Paralleler Stream ist ein zusätzlicher Vorteil gegenüber den Lambda-Ausdrücken. WERBUNG
Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests Starten Sie Ihren kostenlosen Softwareentwicklungskurs Webentwicklung, Programmiersprachen, Softwaretests und andereMöglichkeiten, Parallel Stream in Java durchzuführen
parallelStream()-Methode
List<Object> list=new ArrayList<Object>(); list.parallelStream();
Zuerst erstellen wir eine Array-Listensammlung.
IntStream inStream=IntStream.rangeClosed(initialValue, finalValue); inStream.parallel();
Zuerst erstellen wir einen IntStream-Stream.
Beispiel #1
import java.util.ArrayList; import java.util.List; public class ParalleStreamOnAlphabets { public static void main(String[] args) { System.out.println("Capital Alphabets before Parallel Stream"); // creating array list for adding alphabets List<String> capitalAlphabets = new ArrayList<>(); int ascilCode = 65; // Ascii value of A=65 and Z=90 while (ascilCode <= 90) { // iterating ascii values char alphabets = (char) ascilCode; // converting integer to character capitalAlphabets.add(String.valueOf(alphabets)); // adding Capital alphabets to list ascilCode++;// pre increment operator } // displaying initial Alphabets capitalAlphabets.stream().forEach(System.out::println); System.out.println("Capital Alphabets after Parallel Stream"); // inserting all elements to another list to apply parallelStream // operation without modifying previous array list List<String> captatlAlphabetsParalleStream = capitalAlphabets; //applying parallelStream() on new array list captatlAlphabetsParalleStream.parallelStream().forEach(System.out::println); } }
Erklärung:
Wie Sie die Ausgabe vor der Anwendung des Parallelstreams sehen können, haben wir die Ausgabe nacheinander erhalten.
import java.util.ArrayList; import java.util.List; public class ParallelStreamEvenNumbers { public static void main(String[] args) { System.out.println("Even Numbers before Parallel Stream"); // creating array list for adding alphabets List<Integer> evenNumbers = new ArrayList<Integer>(); for (int number=0;number<=10;number++) { // iterating numbers if(number%2==0) //if number even go inside the condition evenNumbers.add(number); //added all even numbers } // displaying initial even numbers evenNumbers.stream().forEach(System.out::println); System.out.println("Even Numbers before Parallel Stream"); // inserting all elements to another list to apply parallelStream // operation without modifying previous array list List<Integer> captatlAlphabetsParalleStream = evenNumbers; // applying parallelStream() on new array list captatlAlphabetsParalleStream.parallelStream().forEach(System.out::println); } }
Erklärung:
Wie Sie die Ausgabe vor der Anwendung des Parallelstreams sehen können, haben wir die Ausgabe nacheinander erhalten.
import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.stream.Stream; public class ParallelStreamCourseFee { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("How many number would you like to enter=>"); int inputNumber = scanner.nextInt(); // asking user for number count List<Courses> courseWithFee = new ArrayList<Courses>();// creating array String coursename = ""; int courseFee = 0; for (int i = 0; i < inputNumber; i++) { coursename = scanner.next();//taking course name input courseFee = scanner.nextInt();//taking course fee input courseWithFee.add(new Courses(coursename, courseFee));//adding course name and fee } //get the stream list which courses fee is >1000 Stream<Courses> list = courseWithFee.parallelStream().filter(e -> e.getCourseFee() > 1000); //displaying courses count which is fee is >1000 System.out.println("Course Fee above 1000 is=> " + list.count()); scanner.close(); } } //courses class class Courses { String course; int courseFee; public Courses(String course, int courseFee) { this.course = course; this.courseFee = courseFee; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public int getCourseFee() { return courseFee; } public void setCourseFee(int courseFee) { this.courseFee = courseFee; } }
Erklärung:
Wie Sie in der Ausgabe sehen können, müssen wir mit einer Kursgebühr von >1000 rechnen.
import java.util.stream.IntStream; public class Main { public static void main(String[] args) { // Taking InStream with range of 1 to 1000 //On rane() applied parallel method //On parallel() method applied filter to decide whether given number odd or not //after getting odd numbers we simply displaying odd numnbers count int oddNumberCount = (int) IntStream.range(1, 1000).parallel().filter(value -> oddOrNot(value)).count(); //displaying odd number count System.out.println("Count of Odd Number from 1-1000 range is => " + oddNumberCount); } public static boolean oddOrNot(int inputNumber) { //checking first number >0 and then checking range from 1 tom 1000 //next checking odd number or not within nonMatch method return inputNumber > 0 && IntStream.rangeClosed(1, inputNumber).noneMatch(temp -> inputNumber % 2 == 0); } }
Erklärung:
Wie Sie sehen, kann die parallele Methode nur mit Streams angewendet werden.
import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.function.IntPredicate; import java.util.stream.Collectors; import java.util.stream.IntStream; public class ParallelPrimeNumber { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("How many number would you like to enter=>"); int inputNumber = scanner.nextInt(); //asking user for number count System.out.print("Enter your numbers =>"); List<Integer> listNumbers = new ArrayList<Integer>();//creating array list for (int i = 0; i < inputNumber; i++) { listNumbers.add(scanner.nextInt());//adding user elements into an array } //checking the entered numbers are prime or not //filter(ParallelCount::isPrime) ParallelCount is class name and primeNumberOrNot method List<Integer> primeOut = listNumbers.stream().filter(ParallelPrimeNumber::primeNumberOrNot).collect(Collectors.toList()); System.out.print("Prime number set from your entered numbers is/are=>"); for (Integer i : primeOut) { System.out.print(i+" ");//displaying prime numbers } scanner.close(); } public static boolean primeNumberOrNot(int i) { //IntPredicate checks the number whether even, odd, prime etc. based on condition IntPredicate trueOrNot = index -> i % index == 0; //return true if entered number is prime else returns false return i > 1 && IntStream.range(2, i).noneMatch(trueOrNot); } }
Erklärung:
Wie Sie im obigen Code sehen können, führt sogar die parallele Methode für Streams auch Primzahlen, gerade Zahlen, ungerade Zahlen usw. aus.
Vorteile
Das obige ist der detaillierte Inhalt vonJava Parallel Stream. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!