[java] 람다 표현식을 사용하여 스트림을 어떻게 변환할 수 있나요?
스트림을 변환하는 가장 일반적인 메서드 중 하나는 map
이며, 데이터를 다른 형태로 매핑하는 데 사용됩니다. 예를 들어, 리스트의 각 요소를 제곱하여 새로운 스트림을 생성하려면 다음과 같이 작성할 수 있습니다:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squaredNumbers = numbers.stream()
.map(n -> n * n)
.collect(Collectors.toList());
이 코드에서 map
메서드는 각 요소를 제곱하여 새로운 스트림을 생성하고, collect
메서드는 해당 스트림을 리스트로 변환합니다.
또 다른 일반적인 메서드는 filter
이며, 조건에 맞는 요소만을 걸러내는 데 사용됩니다. 예를 들어, 짝수만을 걸러내는 코드는 다음과 같이 작성할 수 있습니다:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
이 외에도 sorted
, flatMap
등의 다양한 메서드를 사용하여 스트림을 변환할 수 있습니다. 람다 표현식을 활용하여 각 메서드에 해당하는 조건을 간결하게 작성할 수 있습니다.
참고 문헌:
- Oracle 자바 람다 표현식 가이드: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html