Heim > Java > javaLernprogramm > Hauptteil

Java Parallel Stream

WBOY
Freigeben: 2024-08-30 16:11:08
Original
656 Leute haben es durchsucht

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 Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Möglichkeiten, Parallel Stream in Java durchzuführen

parallelStream()-Methode
  • Parallel()-Methode
  • Wie funktioniert Parallel Stream in Java?

Es basiert auf der angewendeten parallelStream()-Methode auf Sammlungen oder der parallel()-Methode auf Streams.

Syntax:

List<Object> list=new ArrayList<Object>();
list.parallelStream();
Nach dem Login kopieren
Erklärung:

Zuerst erstellen wir eine Array-Listensammlung.
  • Bei der Array-Sammlung wird die Methode paralleStream() angewendet.
  • Wir kommen zu dem Schluss, dass parallelStream() nur auf Sammlungen angewendet wurde.
Syntax:

IntStream inStream=IntStream.rangeClosed(initialValue, finalValue);
inStream.parallel();
Nach dem Login kopieren
Erklärung:

Zuerst erstellen wir einen IntStream-Stream.
  • Auf Stream angewendete parallel()-Methode.
  • Wir kommen zu dem Schluss, dass parallel() nur auf Streams angewendet wurde.
  • Beispiele

Im Folgenden finden Sie Beispiele:

Beispiel #1

parallelStream() wird auf Großbuchstaben angewendet.

Code:

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);
}
}
Nach dem Login kopieren
Ausgabe:

Java Parallel Stream

Java Parallel Stream

Erklärung:

Wie Sie die Ausgabe vor der Anwendung des Parallelstreams sehen können, haben wir die Ausgabe nacheinander erhalten.
  • Aber als wir den parallelen Stream anwendeten, erhielten wir eine Zick-Zack-Ausgabe, also parallel.
  • Beispiel #2

parallelStream() wird auf gerade Zahlen angewendet.

Code:

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);
}
}
Nach dem Login kopieren
Ausgabe:

Java Parallel Stream

Erklärung:

Wie Sie die Ausgabe vor der Anwendung des Parallelstreams sehen können, haben wir die Ausgabe nacheinander erhalten.
  • Aber als wir den parallelen Stream anwendeten, erhielten wir eine Zick-Zack-Ausgabe, also parallel.
  • Beispiel #3

parallelStream() wird auf die Kursgebühr angewendet.

Code:

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;
}
}
Nach dem Login kopieren
Ausgabe:

Java Parallel Stream

Erklärung:

Wie Sie in der Ausgabe sehen können, müssen wir mit einer Kursgebühr von >1000 rechnen.
  • Beispiel #4

parallel() wird auf die Anzahl ungerader Zahlen angewendet.

Code:

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);
}
}
Nach dem Login kopieren
Ausgabe:

Java Parallel Stream

Erklärung:

Wie Sie sehen, kann die parallele Methode nur mit Streams angewendet werden.
  • Beispiel #5

parallel() wird auf die Primzahl angewendet.

Code:

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);
}
}
Nach dem Login kopieren
Ausgabe:

Java Parallel Stream

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 und Anwendungen von Java Parallel Stream

Im Folgenden sind die Vorteile und Anwendungen aufgeführt:

Vorteile

Verbessert die CPU-Auslastung effizienter als normale Filter.
  • Parallelstream verarbeitet mehrere Daten gleichzeitig.
  • Anwendungen

Wird mit der Aggregate-Funktionalität verwendet.
  • Wird mit größeren Sammlungsrahmen verwendet.
  • Wird mit sequentiellen Streams verwendet.
  • Fazit

Dies wird mit der parallelStream()-Methode für Sammlungen und der parallel()-Methode für Streams erreicht. Der parallele Stream reduziert die Verarbeitungszeit, sodass hauptsächlich große Sammlungsdaten verwendet werden.

Das obige ist der detaillierte Inhalt vonJava Parallel Stream. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage