2023. 11. 11. 23:55ㆍ개발 문서/Java
Java 8에서 도입된 람다 표현식과 스트림 API는 자바의 함수형 프로그래밍 지원을 강화하고, 컬렉션을 더 효과적으로 다룰 수 있게 해주는 기능들입니다.
1. 람다 표현식 (Lambda Expressions):
람다 표현식은 익명 함수의 선언을 간결하게 표현하는 방법으로, 자바 8에서 함수형 프로그래밍을 지원하기 위해 도입되었습니다.
// 기존의 익명 클래스
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello, World!");
}
};
// 람다 표현식
Runnable runnable2 = () -> System.out.println("Hello, World!");
람다 표현식은 매우 간결하게 코드를 표현할 수 있고, 함수형 인터페이스를 통해 사용됩니다.
2. 함수형 인터페이스 (Functional Interface):
람다 표현식을 사용하기 위해서는 함수형 인터페이스가 필요합니다. 함수형 인터페이스는 하나의 추상 메소드를 갖는 인터페이스를 말합니다.
@FunctionalInterface
interface MyFunction {
void myMethod();
}
// 람다 표현식으로 MyFunction 인터페이스 구현
MyFunction myFunction = () -> System.out.println("My Method");
3. 스트림 API:
스트림 API는 컬렉션을 함수형 프로그래밍의 스타일로 다룰 수 있는 기능을 제공합니다. 스트림을 사용하면 데이터를 더 쉽게 필터링, 매핑, 정렬할 수 있습니다.
List<String> languages = Arrays.asList("Java", "Python", "JavaScript", "C#", "Ruby");
// 스트림을 이용한 데이터 필터링과 매핑
List<String> result = languages.stream()
.filter(lang -> lang.startsWith("J"))
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(result); // [JAVA, JAVASCRIPT]
스트림은 중간 연산과 최종 연산으로 구분됩니다. 중간 연산은 스트림을 반환하고, 최종 연산은 스트림을 사용하여 결과를 생성합니다. 이러한 특징 덕분에 스트림은 지연 평가(Lazy Evaluation)를 할 수 있어 성능을 향상시킬 수 있습니다.
스트림 API는 병렬 처리도 지원하여 멀티코어 환경에서 높은 성능을 제공합니다.
이 외에도 람다 표현식과 스트림 API는 다양한 기능들을 제공하며, 함수형 프로그래밍의 장점을 자바에 도입하였습니다. 코드의 가독성을 높이고 병렬 처리 등에 강점을 가지게 해주는 중요한 기능들 중 하나입니다.
'개발 문서 > Java' 카테고리의 다른 글
자바 개발 환경 설정과 관리 (0) | 2023.11.12 |
---|---|
자바 9, 10, 11의 새로운 기능 소개 (0) | 2023.11.11 |
자바 디자인 패턴 소개 (0) | 2023.11.11 |
자바의 입출력 스트림과 파일 처리 (0) | 2023.11.11 |
스레드와 동시성 프로그래밍 (0) | 2023.11.11 |