본문 바로가기
JAVA

[JAVA 개념 9] 람다식

by 자유데이터 2018. 11. 13.
반응형

1.람다식 
: 익명구현객체를 생성 하는 두번째 방법.
:  이름이 없는 함수식을 처리하겠다.

1)함수적 인터페이스(functional interface)
    : 인터페이스에 선언된 추상메소드(abstract method)의 개수가 오직 하나뿐인 인터페이스
    : 상수(0....N개),  추상메소드(1개),  디폴트 메소드(0....N개),  정적메소드(0....N개)

2)타겟 타입(target type)
    :람다식이 구현할 함수적 인터페이스를 "해당 람다식의 타겟타입"이라고 한다.


**functional programming
객체를 만들지 않고 함수(function(=mtehod))로 바로 처리해버리는 프로그램. 요즘 많이 사용되는 프로그램이다.
많은 데이터를 빠른 속도로 처리하기 위해서 객체생성 시간도 아깝다.
따라서, 람다식에서 익명구현객체를 생성한다.

수학에서 람다식의 사용방식 
(매개변수)  ->  {식의 전개}
(매개변수의 선언들..)  ->  {실행코드들...}

-람다식 사용하는이유
  • 코드가 매우 간결해진다.
  • 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑(타입변환)이 쉽게 집계

2.람다식 기본 문법

        ( 타입 매개변수, ... ) -> { 실행문; ... }         
추상 메소드가 하나이기 때문에 메소드 선언을 할 필요가 없다.    

예제를 통해 점점 간단해지는 코드 표현을 확인 할 수 있다.
ex)
MyfunctionalInterface(인터페이스) - MyfunctionalInterfaceExam(실행클래스)



뿐만아니라 리턴값 조차 생량이 가능하다.



3.중첩클래스에서 람다식어려우면 넘어가도 된다.

: 클래스 블록 안에서, 새로이 선언된 클래스를 의미
    -->별도의 이름을 부여 : "멤버 클래스"라고 부름

: 메소드 블록 안에서, 새로이 선언된 클래스를 의미
    -->별도의 이름을 부여 : "로컬 클래스"라고 부름

이 중첩클래스를 포함하고 있는 바깥쪽 클래스를 Outer Class라 한다.
Outer Class안에 중첩된 클래스는 Inner Class라고 한다.

ex)


**중첩클래스(Nested Class)
위의 예제를 이어 중첩클래스를 살펴보겠다.

ex)

위의 예제는 중첩클래스 선언하는 방법을 나타낸다.
...


4.표준 API의 함수적 인터페이스
: 람다식을 사용하기 위해 java.util.function 패키지에 포함되어 있는 인터페이스이다.

1)Consumer 인터페이스
: 매개값만 있고 리턴값이 없는 추상 메소드를 가진다.
  데이터를 소비할때 사용한다. 안에서만 소비하기 때문에 리턴값이 없어 void를 가진다.


ex)




2)Supplier 인터페이스
:매개값은 없고 리턴값만 있는 추상 메소드를 가진다.


ex)


3)Function 인터페이스
:매개값과 리터값이 모두 있는 추상 메소드를 가진다.
:매핑(타입 변환)용으로 자주 쓰인다. 즉, 매개값이 Function에 의해 다른 타입으로 리턴된다.
:대용량 데이터를 정제할때 사용한다.








//------------------------------

Thread와 람다식을 이용한 예제
ex)




























반응형

댓글