JAVA 8+ 람다 표현식

TopOfTheHead·2026년 4월 10일

자바 ( JAVA )

목록 보기
23/29

람다 표현식 ( Lambda Expression ) = 익명함수 ( Anonymous Function )

(int x , int y) -> { x + y }

JAVA 8에서 추가된 기능으로서 함수형 인터페이스 구현체 생성 시 추상 메서드 구현을 간결하게 표현하는 방식
구현클래스 객체를 생성 후 메서드를 정의할 필요 없이 함수형 인터페이스를 통해 간결하게 사용 가능.

JAVA에서 함수형 프로그래밍을 수행 시 함수를 전달하는 매개체인터페이스 구현체를 생성하는 용도로 사용

@FunctionalInterface
interface StringProcessor{
	String process(String s);
}
// StringProcessor 인터페이스 구현체 생성
StringProcessor processer = (s) -> s.toUpperCase().trim();

。 코드에서 단 한번 실행할 목적으로 사용되므로, 코드가 단 한번만 생성되서 활용되므로 불변을 보장하므로 병렬 프로그래밍에 최적화

람다식을 축약한 표현으로 메소드참조 , 생성자참조등의 방식이 존재

  • 람다 표현식의 유래
    람다 대수를 기반으로 람다 표현식으로 구현한 것
    람다 대수 : 함수함수연산으로 추상화한 체계

  • 함수형 인터페이스 구현체매개변수로 받는 메소드에서 주로 활용
    。 이를 통해 일급객체로서 다른 메소드매개변수로 전달하거나 변수에 대입하는 등의 연산이 가능
// ex ) 활용예시
PriorityQueue<Integer> pq = new PriorityQueue<>((o1,o2) -> {
			int i1 = Math.abs(o1);
			int i2 = Math.abs(o2);
			if ( i1 == i2 ) {
				return o1 > o2 ? 1 : -1; // 절댓값이 동일할 경우 음수 우선정렬
			} else {
				return i1 - i2;
			}
		});
  • 람다식 작성 규칙

    매개변수 규칙
    매개변수가 없는 경우, 빈괄호 : () ->
    매개변수가 1개인 경우 괄호 생략 : a ->
    매개변수가 2개 이상인 경우 괄호 생략 불가
        // 매개변수가 없는 경우 -> 빈괄호
        () -> System.out.println("안녕");
        // 매개변수가 1개인 경우 - 괄호생략 가능
        a -> System.out.println(a);
        // 매개변수가 2개 이상인 경우 - 괄호생략 불가능
        (a,b) -> System.out.println(a+b);

실행코드 규칙
logic한 줄이면 return{ }를 생략가능
() - > new 클래스();
중괄호가 존재하는 경우 return 필수

 // 실행코드가 한 줄인 경우 -> 중괄호 생략
   (a,b) -> System.out.println(a+b);

타입 생략 규칙
함수형 인터페이스메서드에 이미 Type을 한정하고 있으므로, 컴파일러타입추론을 자동으로 수행하여 람다식 매개변수Type을 지정하지 않아도된다. : (int a, int b)-> = (a,b)->

  • 람다식 특징

    장점
    。코드가 간결
    지연연산 수행이 가능
    병렬처리 가능

    단점
    디버깅이 까다롭다.
    Stream을 통해 람다식을 활용하는 경우 반복문에서 성능이 저하
profile
공부기록 블로그

0개의 댓글