람다식의 기본 개념

2022. 4. 11. 11:19·자바/람다식

1. 람다식이란?

- 메서드를 하나의 '식'으로 표현한 것을 말한다. 그러므로, 메서드의 이름과 반환값이 사라진다.

 

- 우리는 그것을 익명 함수라고 표현한다.

 

- 아래의 예시를 보자.

int[] arr = new int[5];

Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1);

 

(위 주황색 부분이 람다식이다.)

(이렇게 한다면 클래스와 객체를 생성할 필요없이 바로 호출할 수 있다는 장점이 있다.)

 

 

 

 

 

2. 람다식 작성하기.

- 아래의 코드는 원래의 메서드 함수이다. 이것을 람다식으로 바꾸어 볼 것이다.

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

또는

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

또는

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

// 여기서는 매개변수 a,b중 하나라도 int를 생략하지 않는다면 생략 불가능하다.

// ex) (int a, b) -> 불가능

 

(여기서 ';'을 주의하자. 문장은 세미클론이 필요하지만 람다식은 식이기 때문에 필요가 없다.)

 

 

 

- 또한 선언된 매개변수가 하나라면 ()를 아예 생략도 가능하다.

(a) -> a*a

또는

a -> a*a

 

( 그러나 (int a)는 되지만 int a는 불가능하다. )

 

 

 

- 만약 괄호{} 안의 문장이 return 문이 있을 경우 {}가 생략 불가능하다.

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

<가능>

 

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

<불가능>

 

 

 

- 리턴문을 사용하면서 괄호{}를 삭제할 수 있다.

int roll(){

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

} 

<원래 메서드>

 

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

또는

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

<람다식 메서드>

 

'자바 > 람다식' 카테고리의 다른 글

메서드 참조  (0) 2022.04.12
Function의 합성과 Predicate의 결합  (0) 2022.04.12
java.util.function 패키지  (0) 2022.04.11
함수형 인터페이스  (0) 2022.04.11
'자바/람다식' 카테고리의 다른 글
  • 메서드 참조
  • Function의 합성과 Predicate의 결합
  • java.util.function 패키지
  • 함수형 인터페이스
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      InputStream
      문자 기반 스트림
      소켓 프로그래밍
      알고스팟
      선택 정렬
      Collections Framework
      유용한 클래스
      스트림
      Arrays
      serializable
      file
      람다식
      불안정 정렬
      ServerSocket
      코드트리
      map()
      역직렬화
      snail
      다형성
      java.time 패키지
      안드로이드 스튜디오
      java.lang패키지
      TCP 소켓 프로그래밍
      안정 정렬
      자바 개념
      코딩트리조별과제
      제자리 정렬
      outputstream
      코딩테스트
      중간연산
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    람다식의 기본 개념
    상단으로

    티스토리툴바