병렬 스트림은 예상되는 출력을 생성하도록 의도될 수 있는 다양한 기능을 지원하는 객체의 병렬 흐름입니다. 병렬 스트림은 사용자가 컬렉션, 배열, Java 입력 및 출력 API에서 입력을 입력할 수 있는 데이터 구조가 아닙니다. 병렬 스트림은 기능의 실제 동작을 변경하지 않지만 적용된 필터(파이프라인)를 기반으로 출력을 제공할 수 있습니다. 병렬 스트림은 Java 8th 버전 이후에 등장한 Java 기능 프로그래밍의 일부입니다. 병렬 스트림은 람다 표현식에 추가적인 이점을 제공합니다.
광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
Java에서 병렬 스트림을 수행하는 방법
콜렉션에 적용된 ParallelStream() 메소드나 스트림에 적용된 Parallel() 메소드를 기반으로 합니다.
구문:
List<Object> list=new ArrayList<Object>(); list.parallelStream();
설명:
구문:
IntStream inStream=IntStream.rangeClosed(initialValue, finalValue); inStream.parallel();
설명:
다음은 예시입니다.
대문자에 parallelStream()을 적용했습니다.
코드:
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); } }
출력:
설명:
짝수에 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); } }
출력:
설명:
수강료에 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; } }
출력:
설명:
홀수 계산에 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); } }
출력:
설명:
소수에 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); } }
출력:
설명:
다음은 장점과 적용 분야입니다.
컬렉션에서는 ParallelStream() 메서드를 사용하고 스트림에서는 Parallel() 메서드를 사용하여 구현됩니다. 병렬 스트림은 처리 시간을 줄여주므로 대용량 수집 데이터를 주로 사용합니다.
위 내용은 자바 병렬 스트림의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!