컴퓨터는 잘못이 없다..

[JAVA]람다식 본문

공부/JAVA

[JAVA]람다식

도토리까꿍v 2024. 4. 27. 10:47
Contents 접기

#핵심 요약

  1. 람다 표현식(Lambda Expression)
    • 메소드 대신 하나의 식으로 표현하는 것
    • 익명 함수 (Anonymous function)
    • 메소드 : 반환타입 메소드이름 (매개변수,....) {실행문...}  ex. public int sum(int x, int y) { return x+y; }
    • 람다식 : (매개변수,...) -> {실행문...}  ex. (int x, int y) -> {return x+y;}
  2. 람다식의 장단점
    • 장점
      • 일반적으로 코드가 간결
      • 코드 가독성이 좋아짐
      • 생산성이 높아짐
    • 단점
      • 재사용이 불가능(익명)
      • 디버깅 어려움
      • 재귀함수로는 맞지 않음

#소스 코드

람다식 기본 예제

// Java 프로그래밍 - 람다식

interface ComputeTool {
    public abstract int compute(int x, int y);

//    public abstract int compute2(int x, int y);
}



public class Main {

    public static void main(String[] args) {

        //익명클래스로 객체 생성
        ComputeTool cTool1 = new ComputeTool() {
            @Override
            public int compute(int x, int y) {
                return x + y;
            }
        };
        System.out.println(cTool1.compute(1, 2));

        
        /*
        *
        * 람다식으로 객체 생성
        * 주의!) 람다식으로 객체 생성시 추상메소드가 2개인 경우는 람다식으로 객체생성이 불가능하다.
        * (익명 클래스로는 가능)
        * */
        ComputeTool cTool2 = (x, y) -> { return x + y; };
        System.out.println(cTool2.compute(1, 2));

    }
}

 

 

람다식 연습 문제

// Practice
// 아래 인터페이스를 이용하여 익명클래스로 구현한 내용을 람다식으로 구현해보세요.

interface CompareTool {
    public abstract int getMaxNum(int num1, int num2);
}

public class Practice {
    public static void main(String[] args) {
        // 익명클래스
        CompareTool cTool = new CompareTool() {
            @Override
            public int getMaxNum(int num1, int num2) {
                return num1 > num2? num1 : num2;
            }
        };
        System.out.println(cTool.getMaxNum(10, 11));


        // 람다식으로 작성
        CompareTool cTool2 = (num1, num2) -> { return num1 > num2? num1 : num2; };
        System.out.println(cTool2.getMaxNum(10, 11));
    }
}

 

 

'공부 > JAVA' 카테고리의 다른 글

[JAVA]스트림  (1) 2024.04.27
[JAVA]컬렉션 프레임워크  (0) 2024.04.21
[JAVA]예외 처리  (0) 2024.04.20
Comments