arrays java 8 stream class
Java 8은 Java 역사의 주요 릴리스였습니다. 이 자습서에서는 스트림 클래스 및 병렬 정렬과 같은 Java 8의 배열에 대한 다양한 변경 사항을 설명합니다.
'Java 8 기능'에 대한 이전 자습서에서 이미 논의한 것처럼이 릴리스에는 많은 새로운 기능이 도입되었습니다. Java 8 스트림 클래스 및 병렬 정렬 방법에 대해 알아 보겠습니다.
학습 내용 :
Java 8의 배열
Java8은 특히 배열과 관련된 몇 가지 기능을 도입했습니다.
다음이 포함됩니다.
- 어레 이용 스트림
- 병렬 정렬
이 튜토리얼에서는 Java 8의 두 가지 기능에 대해 자세히 설명합니다.
자바 8 스트림
Java 8에는 배열의 가독성과 효율성을 향상시키는 배열 용 스트림 클래스가 추가되었습니다. 배열을 스트림으로 변환하면 프로그램의 전반적인 성능도 향상됩니다.
이 외에도 배열에 대한 매핑 및 필터링 작업을 단순화 할 수있는 다양한 Stream API 메서드를 사용할 수도 있습니다.
다음 메서드 오버로드를 사용하여 배열을 스트림으로 변환 할 수 있습니다. .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
다음 프로그램은 배열과 함께 스트림을 사용하는 구현을 보여줍니다. 이 프로그램은 반복 접근 방식과 스트림 접근 방식의 비교를 보여줍니다. 나중에 배열의 요소 합계가 반복 및 스트림을 사용하여 계산되고 평균이 계산됩니다.
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 + ' ')); } }
산출:
위의 출력은 평균 반복 및 스트림 접근 방식을 보여줍니다. 요소가 적을수록 평균은 같지만 배열의 요소가 증가하면 반복 접근 방식이 느려집니다.
다음 프로그래밍 예제는 배열이 정수 스트림으로 변환 된 다음 스트림의 map 메서드를 사용하여 배열의 요소를 임의의 값으로 매핑 한 다음 이러한 요소를 추가하는 방법을 보여줍니다. 다음 프로그램 정수 스트림에있는 모든 요소의 합계를 인쇄합니다. .
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); } }
산출:
위 프로그램에서는 Stream 클래스에서 제공하는 map 메소드를 사용했습니다. 또한 스트림에 요소를 추가하는 sum () 메서드를 사용했습니다.
Windows 10에서 jar 파일을 어떻게 실행합니까?
Java 8 parallelSort () 메서드
Java 8에서는“parallelSort ()”메소드가 도입되었습니다. java.util.Arrays 클래스의 메소드입니다. parallelSort 메서드는 병렬 방식으로 배열을 정렬하는 데 사용됩니다. 각 장치를 쉽게 관리 할 수있을 때까지 배열을 더 작은 단위로 분기 한 다음 개별적으로 정렬하는 포크 및 조인 방식을 사용합니다.
그런 다음 더 작은 단위가 함께 결합되고이 전체 작업이 병렬로 발생합니다. 이 parallelSort 메서드의 가장 큰 장점 중 하나는 멀티 스레딩을 사용하여 정렬을 더 빠르고 효율적으로 만든다는 것입니다.
parallelSort () 메서드에는 다음과 같은 오버로드가 있습니다.
public static void parallelSort (Object obj())
위의 메소드 프로토 타입은 오름차순으로 배열을 정렬하는 데 사용됩니다.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
위의 오버로드는 배열의 'fromIndex'에서 'toIndex'까지 지정된 범위의 요소를 정렬하는 데 사용됩니다.
다음 Java 프로그램은 배열을 정렬하는 parallelSort 메소드를 보여줍니다.
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 + ' ')); } }
산출:
위의 프로그램에서 입력 배열은 parallelSort 메서드를 사용하여 정렬되고 출력이 인쇄됩니다.
다음 프로그램은 Arrays 클래스에서 제공하는 두 가지 정렬 방법 즉, 선형 정렬 인 sort () 메서드와 parallelSort () 메서드를 비교합니다. 이 프로그램은 각 방법이 배열을 정렬하는 데 걸리는 시간을 비교합니다. . 시간은 각 반복에 대해 계산됩니다.
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(); } } }
산출:
위의 출력은 각 반복에 대해 sort 및 parallelSort 메서드에 소요 된 시간을 비교 한 것입니다. sort보다 더 나은 parallelSort 메서드 페어링을 사용하여 sort와 parallelSort 메서드의 성능 간의 명확한 차이를 확인할 수 있습니다.
자주 묻는 질문
Q # 1) Java의 Arrays Stream이란 무엇입니까?
대답: Arrays 클래스의 스트림 메서드입니다. 이 메서드 스트림 (T () 배열)은 배열에서 순차 스트림을 반환합니다.
Q # 2) Java에서 Stream ()이란 무엇입니까?
대답: Java의 Stream ()은 Java 8에서 처음 도입되었습니다. Stream 클래스는 배열을 포함한 컬렉션 객체를 처리하는 데 사용되는 API로 구성됩니다.
Q # 3) Java Stream은 어떻게 작동합니까?
대답: Java 스트림의 API에는 ArrayList, Arrays 등과 같은 컬렉션을 스트림으로 변환 할 수있는 메커니즘이 있습니다. 또한 제공된 다양한 방법을 사용하여 이러한 스트림의 각 요소를 병렬로 처리하고 결과를 전달합니다.
Q # 4) Java 8에서 Stream의 MAP 방식의 목적은 무엇입니까?
대답: map 메소드는 java.util.stream.Streams 클래스에 속합니다. map 메서드는 스트림의 각 요소에 함수를 적용하거나 다른 값에 매핑하고 변환합니다.
Q # 5) Stream이 for loop Java보다 빠릅니까?
대답: 예, 특히 병렬 스트림입니다. 예를 들어 병렬 스트림을 사용하는 Arrays 클래스의 parallelSort 메서드는 Arrays 클래스에서 제공하는 순차 정렬 메서드보다 빠릅니다.
결론
Java의 Streams는 Java 8 이후에 포함 된 새로운 기능입니다. Streams는 Java의 컬렉션에서 메서드를 사용할 수있는 문자열 API를 제공합니다. 이 자습서에서는 Java 배열에서 작동하는 스트림 메서드를 살펴 보았습니다. 또한 Java 8 에디션의 Java 어레이에 추가 된 다른 기능도 확인했습니다.
그중 하나는 스트림이고 다른 하나는 병렬 방식으로 배열을 정렬하는 parallelSort 메서드입니다. 이 방법은 두 방법을 비교 한 프로그램에서 분명한 선형 방법 정렬보다 빠릅니다.
또한 읽기 = >> Java 8의 인터페이스 변경
=> 독점적 인 Java 교육 자습서 시리즈를 보려면 여기를 방문하십시오.