모던 자바: 람다식과 스트림 API (Lambda & Stream)
Java 8 버전에 도입된 람다(Lambda)와 스트림(Stream) API는 자바의 패러다임을 바꾼 혁명적인 기능입니다. 기존에는 컬렉션의 데이터를 거를 때 지저분한 for문과 if문을 남발해야 했습니다.
스트림 API를 사용하면, 원본 데이터를 물줄기(Stream)에 올린 뒤, 조건에 맞게 거르고(filter), 형태를 변환하고(map), 최종적으로 묶는(collect) 과정을 컨베이어 벨트처럼 선언적(Declarative)으로 매우 우아하게 작성할 수 있습니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Apple", "Banana", "Cherry", "Avocado", "Blueberry");
// [과거 방식] 'A'로 시작하는 과일만 대문자로 바꿔서 새 리스트에 담기
// 코드가 길어지고 가독성이 떨어집니다.
// [모던 자바 스트림 방식]
List<String> result = names.stream() // 1. 물줄기(스트림) 생성
.filter(name -> name.startsWith("A")) // 2. 중간 연산: 'A'로 시작하는 데이터만 통과 (람다식)
.map(String::toUpperCase) // 3. 중간 연산: 모두 대문자로 변환 (메서드 참조)
.collect(Collectors.toList()); // 4. 최종 연산: 결과를 모아서 List로 반환
System.out.println("결과: " + result);
// 출력: 결과: [APPLE, AVOCADO]
}
}