[개발이야기 #06] 람다식

nyoung·2023년 4월 19일
1

개발이야기

목록 보기
6/9
post-thumbnail

저번주에 머때매 바빴는지는 모르겠는데, 암튼 바빴다..
한주를 놓치니까 밀린 공부들이 너무 많고ㅠ.ㅠ 계획표를 작성했는데, 절반 이상을 수행하지 못한 걸 보니 현타도 뽝
이번주부터 다시 파이팅해보자!
이번에 이야기해 볼 람다식은 처음에는 수학 공식 같아서 친근하고 쉬워보였는데, 활용되고 응용되는 부분에서 조금 띠용했다.
관련해서 공부하다보니 내가 배열에 조금 약한 걸 깨달아버린..


람다식

람다식은 함수를 익명으로 정의하는 방식으로, 간결하게 함수를 표현할 수 있는 형태의 코드이다.

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

간단하고 간결하게 함수를 표현할 수 있는것이 특징이다.

🔤 람다식 표현

람다식의 기본코드는 앞에서 말한 것과 같지만, 생략 가능한 표현식도 있다.

//기본형태, 매개변수의 형식은 컴파일러가 추론할 수 있기 때문에 생략한다.
(x, y) -> {return x + y;}

//매개변수가 하나인 경우 자료형과 괄호 생략 가능.
x -> {return x + y;}

//실행문이 한 문장인 경우 중괄호와 return키워드 생략 가능.
x -> x + y;

ℹ️ 함수형 인터페이스 구현

람다식은 함수형 인터페이스를 구현하는데 주로 사용된다. 함수형 인터페이스란? 단 하나의 추상 메서드를 가지는 인터페이스!

람다식을 사용하면 인터페이스의 메서드를 간단하게 구현할 수 있는데, 예시로 Runnable 인터페이스의 run 메서드를 람다식으로 구현해보자.

// 기존의 익명 내부 클래스를 이용한 인터페이스 구현
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, World!");
    }
};

// 람다식을 이용한 인터페이스 구현
Runnable runnable = () -> {System.out.println("Hello, lambda!");};

함수형 프로그래밍 지원

람다식은 자바에서 함수형 프로그래밍을 지원하기 위한 기능이라고 할 수 있다.
함수를 변수에 저장하거나, 함수를 매개변수로 전달하거나, 함수를 반환하는 등 람다식은 함수를 변수처럼 사용한다.
예시를 통해서 알아보자면,

// 리스트의 각 요소를 출력하는 예시 (기존 방식)
List<String> list = Arrays.asList("apple", "banana", "cherry");

list.forEach(new Consumer<String>() {  //forEach는 Stream의 최종연산으로 Stream에서 람다식을 많이 활용한다.
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
});

// 리스트의 각 요소를 출력하는 예시 (람다식 사용)
List<String> list = Arrays.asList("apple", "banana", "cherry");

list.forEach(s -> System.out.println(s));

forEach 메서드에 람다식을 전달인자로 전달하여 각 요소를 출력해보았다.


어디에서 주로 사용되는지 궁금하였는데, 강의 뒷편에서 이어지는 Stream에서 주로 활용하는 것을 알게 되었다.
개인적으로 찾아본 결과 람다 stream 사용 시 단순 for문 혹은 while문 사용 시 성능이 떨어진다고 하여서, 사용성을 판단하여서 사용하는게 좋을 듯 하다.

profile
새싹 개발자

0개의 댓글