람다문이란?
Java 8부터 람다 표현식이 도입되었으며, 이는 함수형 프로그래밍을 지원하는 중요한 기능 중 하나입니다.
람다 표현식은 익명 함수의 간결한 형태로, 주로 함수형 인터페이스(Functional Interface)의 인스턴스를 생성하기 위해 사용됩니다.
주요 특징 -
1. 간결성: 불필요한 부분들을 제거하고 코드를 간결한 형태의 함수로 정의할 수 있습니다.
예시-
// 기존의 익명 클래스를 사용한 방식
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello, World!");
}
};
// 람다 표현식을 사용한 방식
Runnable runnable2 = () -> System.out.println("Hello, World!");
2. 함수형 프로그래밍 지원: 람다 표현식은 함수형 프로그래밍을 지원하기 위해 도입되었습니다.
함수형 인터페이스를 통해 람다를 사용하면 함수를 변수에 할당하거나 다른 함수의 매개변수로 전달할 수 있습니다.
예시 -
// 함수형 인터페이스
interface MyFunctionalInterface {
void myMethod();
}
// 람다 표현식으로 함수 구현
MyFunctionalInterface myFunction = () -> System.out.println("My Method");
// 함수 실행
myFunction.myMethod();
3. 병렬 프로그래밍: 람다 표현식은 Java 8에서 소개된 스트림 API와 함께 사용되어 병렬 프로그래밍을 지원합니다.
스트림 API를 사용하면 컬렉션을 이용한 간결하고 병렬화된 연산을 수행할 수 있습니다.
예시 -
List<String> myList = Arrays.asList("Java", "Python", "C++", "JavaScript");
// 람다 표현식과 스트림 API를 사용하여 병렬 처리
myList.parallelStream().filter(s -> s.length() > 3).forEach(System.out::println);
4. 메서드 참조: 람다 표현식을 더 간결하게 만들기 위해 메서드 참조를 사용할 수 있습니다.
이는 메서드를 람다 표현식으로 대체하는 간결한 문법을 제공합니다.
예시 -
// 람다 표현식
myList.forEach(s -> System.out.println(s));
// 메서드 참조
myList.forEach(System.out::println);
5. Effective Final: 람다 표현식에서는 외부 변수에 접근할 때 해당 변수가 effective final이어야 합니다.
이는 변수를 한 번 초기화한 후에 값을 변경하지 않아야 함을 의미합니다.
예시 -
int x = 10;
// x는 effective final
MyFunctionalInterface myFunction = () -> System.out.println(x);
결론 - 람다를 사용할 경우 코드를 더욱 간결하고, 효율적으로 작성할 수 있도록 도와줍니다.