目次
Java での Parallel Stream はどのように機能しますか?
例 #5
Java Parallel Stream の利点と応用
メリット
アプリケーション
結論
ホームページ Java &#&チュートリアル Javaパラレルストリーム

Javaパラレルストリーム

Aug 30, 2024 pm 04:11 PM
java

並列ストリームは、期待される出力を生成するためのさまざまな機能をサポートするオブジェクトの並列フローです。パラレル ストリームは、ユーザーがコレクション、配列、Java 入力および出力 API から入力を入力できるデータ構造ではありません。並列ストリームは機能の実際の動作を変更しませんが、適用されたフィルター (パイプライン) に基づいて出力を提供できます。並列ストリームは、Java 8th バージョン以降に登場する Java 関数型プログラミングの一部です。並列ストリームは、ラムダ式のさらなる利点です。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java で並列ストリームを実行する方法

  • ParallelStream() メソッド
  • Parallel() メソッド

Java での Parallel Stream はどのように機能しますか?

これは、コレクションに適用されたParallelStream() メソッドまたはストリームに適用されたParallel() メソッドに基づいています。

構文:

List<Object> list=new ArrayList<Object>();
list.parallelStream();
ログイン後にコピー

説明:

  • まず、配列リストのコレクションを作成します。
  • 配列コレクションに paralleStream() メソッドが適用されました。
  • ParallelStream() はコレクションにのみ適用されると結論付けます。

構文:

IntStream inStream=IntStream.rangeClosed(initialValue, finalValue);
inStream.parallel();
ログイン後にコピー

説明:

  • まず、IntStream ストリームを作成します。
  • オンストリームでは、Parallel() メソッドが適用されました。
  • Parallel() はストリームにのみ適用されると結論付けます。

以下に例を示します:

例 #1

ParallelStream() が Capital Alphabets に適用されました。

コード:

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);
}
}
ログイン後にコピー

出力:

Javaパラレルストリーム

Javaパラレルストリーム

説明:

  • 並列ストリームを適用する前の出力をご覧のとおり、順次出力が得られています。
  • しかし、並列ストリームを適用すると、出力はジグザグ形式で並列に出力されます。

例 #2

ParallelStream() は偶数に適用されます。

コード:

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);
}
}
ログイン後にコピー

出力:

Javaパラレルストリーム

説明:

  • 並列ストリームを適用する前の出力をご覧のとおり、順次出力が得られています。
  • しかし、並列ストリームを適用すると、出力はジグザグ形式で並列に出力されます。

例 #3

ParallelStream() はコース料金に適用されます。

コード:

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;
}
}
ログイン後にコピー

出力:

Javaパラレルストリーム

説明:

  • 出力でわかるように、コース料金が 1000 を超えていることをカウントする必要があります。

例 #4

Parallel() は奇数カウントに適用されます。

コード:

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);
}
}
ログイン後にコピー

出力:

Javaパラレルストリーム

説明:

  • ご覧のとおり、並列メソッドはストリームにのみ適用できます。

例 #5

Parallel() が素数に適用されました。

コード:

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);
}
}
ログイン後にコピー

出力:

Javaパラレルストリーム

説明:

  • 上記のコードでわかるように、ストリームの並列メソッドでも素数、偶数、奇数などのロジックも実行されます。

Java Parallel Stream の利点と応用

以下に利点と用途を示します:

メリット

  • 通常のフィルターよりも効率的に CPU 使用率を改善します。
  • 並列ストリームは一度に複数のデータを処理します。

アプリケーション

  • 集計機能で使用されます。
  • より多くのサイズのコレクション フレームワークで使用されます。
  • 順次ストリームで使用されます。

結論

これは、コレクションのParallelStream()メソッドとストリームのParallel()メソッドで実現されます。並列ストリームは処理時間を短縮するため、主に大きなコレクション データを使用しました。

以上がJavaパラレルストリームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Javaの平方根

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Javaの完全数

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーター

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

ジャワのウェカ

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Javaのアームストロング数

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Javaのスミス番号

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

Java Springのインタビューの質問

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8 Stream Foreachから休憩または戻ってきますか?

See all articles