ki-sd 님의 블로그
[2026-04-06] 람다식(Lambda)과 스트림(Stream) API를 통한 함수형 프로그래밍 본문
기존의 객체 지향 방식을 넘어, 자바 8부터 도입된 함수형 프로그래밍(Functional Programming)의 패러다임을 받아들이고 코드의 표현력을 극대화했다.
1. 익명 클래스에서 람다식(Lambda Expression)으로의 진화
- 단 한 번만 사용될 일회성 구현 객체를 만들기 위해 매번 익명 클래스를 작성하는 것은 코드가 길어지고 가독성을 해치는 원인이 된다.
- 람다식 (매개변수) -> { 실행문 }을 도입하여, 메서드를 하나의 식(Expression)으로 취급하고 마치 변수처럼 전달하는 메커니즘을 익혔다. 코드가 극적으로 간결해지며, 오직 실행할 '동작(로직)' 자체에만 집중할 수 있게 되었다.
2. Stream API를 이용한 선언적 데이터 처리
- 컬렉션이나 배열에 저장된 요소를 반복문(for, while)으로 하나씩 꺼내 처리하던 기존의 '명령형(Imperative)' 방식에서 벗어나, 파이프라인 형태의 '선언적(Declarative)' 데이터 처리 방식을 학습했다.
- 스트림 파이프라인: 데이터 소스를 스트림으로 생성(stream())하고, 중간 연산(filter, map, sorted)을 거쳐, 최종 연산(collect, count, forEach)으로 결과를 도출하는 3단계 흐름을 체감했다.
- 수십 줄의 조건 루프와 임시 배열이 필요했던 복잡한 필터링 로직이 단 한 줄의 스트림 파이프라인 코드로 압축되는 압도적인 효율성을 경험했다.
'JavaStudy' 카테고리의 다른 글
| [2026-04-08] 스트림(Stream) 심화와 객체 직렬화(Serialization)를 이용한 회원 CRUD (0) | 2026.04.17 |
|---|---|
| [2026-04-07] 자바 I/O의 시작 - File 클래스와 시스템 제어 (0) | 2026.04.17 |
| [2026-04-03] Set과 Map의 논리적 구조와 중복 제어 (0) | 2026.04.17 |
| [2026-04-02] 가변 크기 배열 ArrayList와 제네릭(Generics)의 안정성 (0) | 2026.04.17 |
| [2026-04-01] 리플렉션(Reflection)과 메타 프로그래밍의 기초 (0) | 2026.04.17 |
