알아가기/Java

[Java] Arrays.stream() 및 Arrays.copyOfRange() 함수

XEV 2023. 8. 29. 19:19

 

 

Arrays.stream()

Java8에서 소개된 메서드로, 배열을 스트림으로 변환하는 기능을 제공한다. 이 함수를 사용하면 배열의 각 요소를 순차적으로 처리하고 중간 또는 최종 연산을 수행할 수 있다. 스트림은 함수형 프로그래밍의 개념을 도입하여 코드를 더 간결하게 작성할 수 있게 해준다.

 

 

 

stream() 예제 코드 1

import java.util.Arrays;
import java.util.stream.IntStream;

public class ArrayStreamExample {
    public static void main(String[] args) {
        int[] numbers = { 1, 2, 3, 4, 5 };
        
        // 배열을 스트림으로 변환
        IntStream stream = Arrays.stream(numbers);
        
        // 스트림을 이용한 요소 합계 계산
        int sum = stream.sum();
        System.out.println("Sum: " + sum);
    }
}



/* 출력

Sum: 15

*/

 

 

 

stream() 예제 코드 2

import java.util.Arrays;
import java.util.stream.IntStream;

public class AdvancedArrayStreamExample {
    public static void main(String[] args) {
        int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

        // 2차원 배열을 스트림으로 변환하여 모든 요소 출력
        Arrays.stream(matrix)
              .flatMapToInt(row -> Arrays.stream(row))
              .forEach(System.out::println);
    }
}



/* 출력

1
2
3
4
5
6
7
8
9

*/

 

 

Arrays.copyOfRange()

원본 배열의 일부 요소를 선택하여 새 배열을 생성하는 기능을 제공한다. 이를 통해 수정하지 않고도 필요한 범위의 요소를 새로운 배열로 복사할 수 있다.

 

 

 

copyOfRange() 예제 코드 1

import java.util.Arrays;

public class ArrayCopyExample {
    public static void main(String[] args) {
        int[] sourceArray = { 1, 2, 3, 4, 5 };
        
        // 배열의 인덱스 1부터 3까지의 요소를 복사하여 새 배열 생성
        int[] copiedArray = Arrays.copyOfRange(sourceArray, 1, 4);
        
        // 복사된 배열 출력
        System.out.println("Copied Array: " + Arrays.toString(copiedArray));
    }
}



/* 출력

Copied Array: [2, 3, 4]

*/

 

 

 

copyOfRange() 예제 코드 2

import java.util.Arrays;

public class ArrayCopyExample {
    public static void main(String[] args) {
        int[] originalArray = { 1, 2, 0, 4, 0, 6, 7, 8, 0, 10, 11 };

        // 홀수만 필터링하여 새 배열 생성
        int[] oddArray = Arrays.stream(originalArray)
                               .filter(x -> x % 2 != 0)
                               .toArray();

        // 새 배열에서 인덱스 1과 2의 요소만 복사하여 새 배열 생성
        int[] selectedArray = Arrays.copyOfRange(oddArray, 1, 3);

        System.out.println("Original Array: " + Arrays.toString(originalArray));
        System.out.println("Odd Array: " + Arrays.toString(oddArray));
        System.out.println("Selected Array: " + Arrays.toString(selectedArray));
    }
}




/* 출력

Original Array: [1, 2, 0, 4, 0, 6, 7, 8, 0, 10, 11]
Odd Array: [1, 7, 11]
Selected Array: [7, 11]

*/