목차

✅ Stream()
코딩테스트 문제를 풀때 누구는 if문을 쓰면서 차례대로 문제를 푸는반면 java8 이후부터 등장한 stream을 이용해서 간결하게 코드를 짜는사람도 있다. 일단 나는 전자의 사람이고 stream의 존재는 알지만 잘 사용하는법을 모르고있다. 사용을 해보려고 하지 않아서도 있지만 가끔씩 볼때마다 이해하기 어렵다고 느낄 때가 많아서 한번 정리해봐야겠다 생각했다.
Array.stream() & Stream.of()
Array.stream()과 stream.of()를 보고 어떻게 다른지 궁금했다.
Array.stream()
- 우선 이 동작은 배열을 Stream으로 변환하는 용도로 사용한다.
int[] numbers = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(numbers);
// Stream에서 작업 수행
stream.forEach(System.out::println);⇒ 이렇게 사용하면 int배열에있는 숫자들을 Stream할 수 있다. 정수를 stream하기 때문에 IntStream을 사용해야하는것도 잊지말자.
Stream.of()
Stream<String> stringStream = Stream.of("apple", "banana", "cherry");
// Stream에서 작업 수행
stringStream.forEach(System.out::println);⇒ Stream.of()는 주어진 요소들을 Stream으로 생성할 수 있다.
Stream 중개연산과 최종연산
- Stream을 했으면 그 다음 연산을 진행 해야하는데 그게 바로 중개연산과 최종연산이다.
👉
중개연산 : Stream에서 데이터를 변환, 정렬, 필터링 등의 작업을 수행하며, 중개연산들은 체이닝될 수 있다.
최종연산 : 중개연산의 결과를 바탕으로 최종 결과를 도출하는 연산이다. Stream에서 단 한번만 호출된다.
Stream 사용예시 1)
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squaredNumbers = numbers.stream()
.map(n -> n * n) // 중개 연산: 각 요소를 제곱
.collect(Collectors.toList()); // 최종 연산: 변환된 요소들을 리스트로 수집
System.out.println(squaredNumbers); // [1, 4, 9, 16, 25]Stream 사용예시 2)
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long evenCount = numbers.stream()
.filter(n -> n % 2 == 0) // 중개 연산: 짝수만 필터링
.count(); // 최종 연산: 요소 개수 집계
System.out.println("짝수 개수: " + evenCount); // 짝수 개수: 2
👉
Stream은 강력한 도구로써, 간결하고 유연하게 데이터를 처리할 수 있는 기능을 제공한다. 하지만 사용시 주의할 연산들도 존재하고 간편한만큼 정확한 이해를 바탕으로 사용해야 동작의 오류를 범할 확률이 적어지니 여러 예제와 실습을 통해서 숙달해야겠다.