ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 람다식(Lambda Expressions)
    개발관련/Java 2024. 3. 27. 19:40

    람다식(Lambda Expressions)

    : "식별자 없이 실행가능한 함수" (함수인데 함수를 만들지 않고 코드 한줄에 써서 호출하는 방식)

     

    지원 버전

    : Java 8 이상

    //람다식 구문
    (매개변수, ...) -> {실행문 ...}

     

    [장점]

    1. 코드 간결화

    2. 가독성 향상

    3. 함수 생성 필요없기에 코딩구현시간이 절약됨

    4. 병렬프로그래밍에 용이

     

    [단점]

    1. 함수생성 하지 않기에 재사용 어렵 (※무명함수는 재사용 불가)

    2. 디버깅이 까다롭다

    3. 람다를 남발하면 코드가 지저분해질 수 있음 (비슷한 함수 중복생성 주의)

    4. 재귀로 만들경우 다소 부적합함

     

    [예제]

    /* 예제코드
    예시를 위해 Person이라는 Class와 Say라는 Functional Interface를 만들었습니다.
    ※ Functional Interface란 함수가 하나만 존재하는 Interface를 의미합니다.*/
    @FunctionalInterface
    interface Say{
        int someting(int a,int b);
    }
    class Person{
        public void hi(Say line) {
    	int number = line.someting(3,4);
    	System.out.println("Number is "+number);
        }
    }
    
    
    //람다식 사용X
    Person rin = new Person();
    rin.hi(new Say() {
        public int someting(int a, int b) {
    	System.out.println("My Name is Coding-Factory");
    	System.out.println("Nice to meet you");
    	System.out.println("parameter number is "+a+","+b);
    	return 7;
        }
    });
    
    //람다식 사용O
    Person rin = new Person();
    rin.hi((a,b) ->{
    	System.out.println("This is Coding-Factory!");
    	System.out.println("Tank you Lamda");
    	System.out.println("parameter number is "+a+","+b);
        return 7;
    });

     

    [람다식 사용 예시]

    //사용예시 : 두개의 숫자 더하기
    
    interface Compare{
        public int compareTo(int a, int b);
    }
    
    public class Ramda2 {
        //람다식 문법 (매개변수 목록)->{실행문}
        public static void exec(Compare com) {
            int k = 10;
    	int m = 20;
    	int value = com.compareTo(k, m);
    	System.out.println(value);
        }
        public static void main(String[] args) {
    	exec((i,j)->{
    	    return i+j;
    	});
        }
    }
    //사용예시 : 두개의 숫자중 큰 수 찾기
    
    import extendsss.main;
    public class Ramda3 {
        @FunctionalInterface//함수형 인터페이스 체크 어노테이션
        public interface MyNumber{
    	  int getMax(int num1, int num2);
        }
        public static void main(String[] args) {
    	  MyNumber max = (x,y)->(x>=y)? x:y;
    	  System.out.println(max.getMax(10, 30));
        }
    }
    //사용예시 : Runnable 인스턴스 생성
    
    public class RunnableEx {
        public static void main(String[] args) {
            Runnable runnable = () -> {
                for (int i = 0; i < 30; i++) {
                    System.out.println(i);
                }
            };
            Thread thread = new Thread(runnable);
            thread.start();
        }
    }
    //사용예시 : Thread 호출
    
    Thread thread = new Thread( () -> {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
    });

    출처 : https://coding-factory.tistory.com/entry/Java-람다식Lambda-Expressions-사용법-예제

     

    [Java] 람다식(Lambda Expressions) -> 사용법 & 예제

    람다식이란? 람다식이란 "식별자없이 실행가능한 함수" 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 되겠습니다. 함수적 프로그래밍을

    coding-factory.tistory.com

Designed by Tistory.