람다 LAMBDA

2022. 3. 8. 18:04·Programing/JAVA
  • 자바 8부터 지원하는 함수 구현과 호출 만으로 프로그래밍 하는 함수형 프로그래밍 방식 지원
  • 이름이 없는 익명 함수
  • 함수적 인터페이스로 구현
  • Kotlin, Scala 같은 언어도 객체지향 + 함수형 언어

람다식 형식

  • 타입 생략 가능
  • 매개변수가 한개라면 괄호도 생략 가능
  • 매개변수가 없는 경우는 괄호 생략 불가
  • 실행문이 한개라면 중괄호도 생략 가능
(타입 매개변수...) -> {
    실행문 ..
}

() -> {}
package chapter15;

public class LambdaFunctionEx {

    public static void main(String[] args) {

                // 람다식
        InterfaceEx ie = (int x, int y) -> x+y;

        System.out.println(ie.sum(1, 2));

    }

}

// 함수적 인터페이스
interface InterfaceEx {
    public int sum(int x, int y);
}

함수적 인터페이스

  • 함수는 하나의 추상메서드만 정의하는 인터페이스
  • 람다식이 추상메서드를 재정의 하는 개념
  • 대표적으로 Runnable 인터페이스 run() 추상메서드 하나 정의 되어 있음
package chapter15;

public class LambdaEx {

    public static void main(String[] args) {

        LambdaInterface li = () -> {
            String str = "메서드 출력";
            System.out.println(str);
        };

        li.print();

    }

}

interface LambdaInterface {
    void print();
    //void print2(); // 오류발생
}

@FunctionalInterface

  • 2개이상 메서드 선언시 오류 체크
package chapter15;

public class LambdaEx3 {

    public static void main(String[] args) {

        LambdaInterface3 li3 = (String name) -> {
            System.out.println("제 이름은 "+name+"입니다.");
        };

        li3.print("홍길동");

    }

}

@FunctionalInterface
interface LambdaInterface3 {
    void print(String name);
}

매개변수와 리턴값 사용

package chapter15;

public class LambdaEx4 {

    public static void main(String[] args) {

        LambdaInterface4 f4 = (x,y) -> {
            return x * y;
        };
        System.out.println("두 수의 곱 : " + f4.cal(3, 2));

        f4 = (x, y) -> x + y;
        System.out.println("두 수의 합 : " + f4.cal(3, 2));

        f4 = (x, y) -> { return x/y; };
        System.out.println("두 수의 몫 : " + f4.cal(5, 2));

        f4 = (x, y) -> x%y;
        System.out.println("두 수의 나머지 : " + f4.cal(5, 2));

        f4 = (x,y) -> sum(x, y);
        System.out.println("두 수의 합(sum()) : " + f4.cal(3, 2));

    }

    static int sum(int x, int y) {
        return x+y;
    }

}

@FunctionalInterface
interface LambdaInterface4 {
    int cal(int x, int y);
}

다양한 함수적 인터페이스

  • 다양한 함수적 인터페이스가 있으며 필요 시 추가 학습
  • 최근의 프로그래밍 언어에서는 배열이나 List의 데이터들을 변경하기 위해 map, filter, reduce 메서드 제공됨
  • 자바에서는 스트림 API에서 람다를 매개변수로 받아서 처리

'Programing > JAVA' 카테고리의 다른 글

Java 예외 처리 기초 – try, catch, finally 구조 완전 정리  (0) 2025.07.03
입출력 INPUT / OUTPUT  (0) 2022.03.08
제네릭 GENERIC  (0) 2022.03.08
컬렉션 F/W COLLECTION  (2) 2022.03.07
JAVA- API  (1) 2022.03.07
'Programing/JAVA' 카테고리의 다른 글
  • Java 예외 처리 기초 – try, catch, finally 구조 완전 정리
  • 입출력 INPUT / OUTPUT
  • 제네릭 GENERIC
  • 컬렉션 F/W COLLECTION
쿠크
쿠크
  • 쿠크
    쿠크 개발자
    쿠크
  • 전체
    오늘
    어제
    • 분류 전체보기 (100) N
      • Programing (39) N
        • JSP (3)
        • JAVA (24)
        • Spring (7) N
        • HTML (5)
      • 이외 (15) N
        • Git (5) N
        • 임시 잡다함 (6)
        • IntelliJ (1)
        • 에러 모음 (2)
      • OS (19) N
        • Docker (1)
        • Kubernetes (9) N
        • Linux (7) N
        • DevOps (2)
      • DataBase (2)
        • Mysql (1)
      • 토이 프로젝트 (0)
        • 게시판 만들기 (0)
      • Spring (0)
      • 건강 & 생활 (13) N
        • 여름 건강 (13) N
      • 공부 · 자격증 (1)
      • 명언과 루틴 (3)
      • 부동산 or 주식 (4) N
        • 부동산 (2) N
        • 주식 (2)
      • 경제 (4)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

    • 깃 허브 주소
  • 공지사항

  • 태그

    kubernetes
    error
    HTML
    클래스
    java
    Database
    spring-framwork
    DevOps
    MVC
    상속
    ubuntu
    MySQL
    직장인건강 #점심식사 #식사습관 #건강한점심 #오후졸림 #에너지관리
    실거래가 #부동산정보 #국토부시스템 #호갱노노 #집값조회 #등기부등본
    쿠버네티스
    jsp
    Linux
    spring
    IntelliJ
    데브옵스
  • hELLO· Designed By정상우.v4.10.3
쿠크
람다 LAMBDA
상단으로

티스토리툴바