본문 바로가기
Programming Language/Java & Kotlin

[Java] 람다식

by happy coding! 2019. 6. 13.
반응형

람다식 (Lambda expression)

  • JDK 1.8 부터 추가
  • 람다식의 도입으로 인해 자바는 객체지향언어인 동시에 함수형 언어가 되었다.
  • 람다식 덕분에 함수형 언어의 장점들을 자바에서도 누릴 수 있게되었다.

람다식이란?

  • 람다식은 메서드를 하나의 식(expression)으로 표현한 것이다.
  • 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 익명 함수(anonymous function)이라고도 한다.
  • 모든 메서드는 클래스에 포함되어야 하므로 클래스도 새로 만들어야 하고, 객체도 생성해야만 비로소 이 메서드를 호출할 수 있다. 그러나 람다식은 이 모든 과정없이 오직 람다식 자체만으로도 이 메서드의 역할을 대신할 수 있다.
  • 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다.
  • 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해졌다.

람다식 작성하기

  • 람다식은 '익명 함수' 답게 메서드에서 이름과 반환 타입을 제거하고 매개변수 선언부와 몸통 {} 사이에 '->' 를 추가한다.
반환타입 메서드이름 (매개변수 선언) {
    문장들 
}
(매개변수 선언) -> {
    문장들 
}

메서드를 람다식으로 변환하기

int max(int a, int b) {
    return a > b ? a : b

}

(int a, int b) -> { return a > b ? a : b; }

(int a, int b) -> a > b ? a : b

(a, b) -> a > b ? a : b

void printVar (String name, int i) {
    System.out.println(name + "=" + i);

}

(String name, int i) -> 
{ System.out.println(name + "=" + i);

(name, i) -> { System.out.println(name + "=" + i);

(name, i) -> System.out.println(name + "=" + i);

int square(int x) {
    return x * x;

}

(int x) -> x * x

(x) -> x * x

x -> x * x

int roll() {

    return (int) (Math.random() * 6);

}

() -> { return (int) (Math.random()*6); }

() -> (int) (Math.random() * 6)

int sumArr(int[] arr) {
    int sum = 0;

    for (int i : arr)
        sum += i;

    return sum;

}

(int[] arr) -> {
    int sum = 0;

    for (int i : arr)

            sum += i;

    return sum;

}

##

반응형

댓글