Lamda

  • 람다 함수는 익명함수이다.
  • 그러므로 이름을 가질필요가 없다.
  • 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다.(커링)

익명함수

  • 일급객체이다. : 연산을 모두 지원하는 객체이다.

람다의 장단점

  • 장점
  1. 코드의 간결성 : 람다를 사용하면 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
  2. 지연연산 수행 : 람다는 지연연산을 수행 함으로써 불필요한 연산을 최소화 할 수 있다.
  3. 병렬처리 - 멀티쓰레드를 활용하여 병렬처리를 사용할 수 있다.
  • 단점
  1. 람다식의 호출이 까다롭다.
  2. 람다 Stream사용 시 단순 for문 혹은 while문 사용 시 성능이 떨어진다.
  3. 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어 뜨릴 수 있다.

람다표현식

  1. 람다는 매개변수 화살표(->) 함수몸체로 이용하여 사용할 수있다.

  2. 함수몸체가 단일 실행문이면 괄호를 생략할 수 있다.

  3. 함수몸체가 return문으로만 구성되어 있는 경우 괄호를 생략할 수 없다.

     //정상적인 유형
     () -> {}
     () -> 1
     () -> { return 1; }
    
     (int x) -> x+1
     (x) -> x+1
     x -> x+1
     (int x) -> { return x+1; }
     x -> { return x+1; }
    
     (int x, int y) -> x+y
     (x, y) -> x+y
     (x, y) -> { return x+y; }
    
     (String lam) -> lam.length()
     lam -> lam.length()
     (Thread lamT) -> { lamT.start(); }
     lamT -> { lamT.start(); }
    
    //잘못된 유형 선언된 type과 선언되지 않은 type을 같이 사용 할 수 없다.
    (x, int y) -> x+y
    (x, final y) -> x+y