Java8에서부터 추가된 기능인 스트림은 컬렉션을 선언형으로 쉽게 처리할 수 있는 장점이 있습니다.
for문이나 foreach 를 사용하지 않고 배열 또는 컬렉션에 함수를 조합해서 원하는 결과를 필터링한 후 결과를 얻을 수 있습니다.
그러면 스트림의 장점에는 무엇이 있을까요?
Java Stream 의 장점
간결하고 읽기 쉬운 코드
Java 스트림은 데이터 처리를 위한 간결하고 읽기 쉬운 구문을 제공하므로 코드를 보다 쉽게 유지 관리하고 디버그할 수 있습니다.
병렬 처리
스트림을 쉽게 병렬화할 수 있으므로 대규모 데이터 세트의 성능이 크게 향상될 수 있습니다.
지연 평가
실제로 필요할 때까지 작업이 실행되지 않습니다. 이로 인해 성능이 향상되고 메모리 사용량이 감소할 수 있습니다.
함수 구성
스트림을 사용하면 작업을 함수 방식으로 결합할 수 있으므로 복잡한 처리 파이프라인을 더 쉽게 작성할 수 있습니다.
Java 스트림 예:
filter
지정된 조건과 일치하는 요소만 포함하도록 스트림을 필터링합니다. 예를 들어 필터 방법을 사용하여 정수 스트림에서 홀수만 선택할 수 있습니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
numbers.stream().filter(n -> n % 2 == 1).forEach(System.out::println);
map
지정된 함수를 사용하여 스트림의 각 요소를 변환합니다. 예를 들어 map 메서드를 사용하여 정수 스트림의 값을 제곱할 수 있습니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().map(n -> n * n).forEach(System.out::println);
reduce
지정된 함수를 사용하여 스트림의 요소를 집계합니다. 예를 들어 reduce 메서드를 사용하여 정수 스트림의 합을 계산할 수 있습니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
System.out.println(sum);