SlideShare a Scribd company logo
JAVA 8 API
김윤섭
• Lambda(ƛ) 표현식
• 함수형 인터페이스
• stream( )
• Lambda(ƛ) 표현식
• 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
LAMBDA(ƛ) 표현식
링크 : closure와 currying
• 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
> 이렇게 축약할 수 있습니다. ( lambda 표현식 )
LAMBDA(ƛ) 표현식
링크 : closure와 currying
• 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
> 이렇게 축약할 수 있습니다. ( lambda 표현식 )
> 또한, 이렇게도 가능합니다. ( currying 방식)
• 프로그래밍에서 -> 익명 메소드
LAMBDA(ƛ) 표현식
링크 : closure와 currying
LAMBDA(ƛ) 표현식 - 문법
• 기본문법
> ( 매개변수 ) -> { 실행시킬 구문 }
• 대상 메소드를 자동으로 찾고, 람다식
만 적용
LAMBDA(ƛ) 표현식 - 문법
• 응용문법
LAMBDA(ƛ) 표현식 - 하급 예제
• 단순한 for문 비교
• lambda식
> stream()을 사용하여 0~10
미만의 수를 포함한 stream
을 생성
> forEach (i -> { … } 문법 사
용 )
> 매개변수 i
LAMBDA(ƛ) 표현식 - 중급 예제
• 장점
> 코드의 수 감소
> 메소드로 행동방식을 전달
> 추상화로 개발자의 의도를 명확하게 하도록 도움
• 단점
> 람다식을 실행할때에는 인터페이스에 선언된 메소드를 호출하여야 한다.
> 재귀 람다식의 호출이 까다롭다.
> 클로저가 지원되지 않는다.
LAMBDA(ƛ) 표현식 - 장/단점
• 함수형 인터페이스 (Functional Interface)
> 개념 소개
> @FunctionalInterface 적용 유무
> 추상 메소드가 여러개일때
> default 메소드
함수형 인터페이스
• 추상메소드가 1개 뿐인 인터페이
스를 함수형 인터페이스라 합니
다.
• @FunctionalInterface
> 함수형 인터페이스임을 명시
> 추상메소드가 두개 이상이라
면 컴파일 오류를 발생
> 없어도 함수형 인터페이스로
서 사용 가능( => 기존 인터
페이스도 람다식 사용 가능 )
함수형 인터페이스 - Annotation 비교
람다식 사용불가
함수형 인터페이스 - 메소드 추가시
함수형 인터페이스 - 예외 메소드
• 구현이 되어있는 default, static
메소드는 추가로 더 있어도 무방
• default 메소드
> JAVA 8 이 되면서 생긴 인터
페이스의 메소드 형태
> Default methods are defined
with the default modifier =>
default 메소드는 기본적으
로 사용될 형태로 정의 된다.
함수형 인터페이스 - 기타
• http://docs.oracle.com/javase/8/docs/api/java/util/function/package-
summary.html => 람다표현식을 타겟으로 한 공식제공 인터페이스
• default 메소드 탄생으로 인한 다중 상속의 모호성이 대두됨
code : https://github.com/yoonsubKim/java-lambda
REFERENCE

More Related Content

What's hot

자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
beom kyun choi
 
자바8강의 1강. lambda expression
자바8강의 1강. lambda expression자바8강의 1강. lambda expression
자바8강의 1강. lambda expression
Sejong Park
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
Changwon National University
 
6 swift 고급함수
6 swift 고급함수6 swift 고급함수
6 swift 고급함수
Changwon National University
 
Java lambda
Java lambdaJava lambda
Java lambda
Hyosang Hong
 
자바8강의 0강. java8 overview
자바8강의 0강. java8 overview자바8강의 0강. java8 overview
자바8강의 0강. java8 overview
Sejong Park
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
Hyosang Hong
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
Sungchul Park
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
진수 정
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
Park Jonggun
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
Hyosang Hong
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
SeungHyun Eom
 
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
MIN SEOK KOO
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
Sungchul Park
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
ETRIBE_STG
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
Javascript - Function
Javascript - FunctionJavascript - Function
Javascript - Function
wonmin lee
 
Just java
Just javaJust java
Just java
Jong Wook Kim
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
beom kyun choi
 

What's hot (20)

자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8강의 1강. lambda expression
자바8강의 1강. lambda expression자바8강의 1강. lambda expression
자바8강의 1강. lambda expression
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
 
6 swift 고급함수
6 swift 고급함수6 swift 고급함수
6 swift 고급함수
 
Java lambda
Java lambdaJava lambda
Java lambda
 
자바8강의 0강. java8 overview
자바8강의 0강. java8 overview자바8강의 0강. java8 overview
자바8강의 0강. java8 overview
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
 
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
Javascript - Function
Javascript - FunctionJavascript - Function
Javascript - Function
 
Just java
Just javaJust java
Just java
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 

Similar to Java 8 api :: lambda 이용하기

2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
흥래 김
 
조리돌림 JAVA8 기반의 기능.pptx
조리돌림 JAVA8 기반의 기능.pptx조리돌림 JAVA8 기반의 기능.pptx
조리돌림 JAVA8 기반의 기능.pptx
JunGi Kim
 
자바 8
자바 8자바 8
자바 8
신 한
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
흥래 김
 
Linq
LinqLinq
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
경주 전
 
9 swift 클로저1
9 swift 클로저19 swift 클로저1
9 swift 클로저1
Changwon National University
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
Hong Hyo Sang
 
Java jungsuk3 ch14_lambda_stream
Java jungsuk3 ch14_lambda_streamJava jungsuk3 ch14_lambda_stream
Java jungsuk3 ch14_lambda_stream
성 남궁
 
[15]Android Kotlin을 통한 개발 전략
[15]Android Kotlin을 통한 개발 전략[15]Android Kotlin을 통한 개발 전략
[15]Android Kotlin을 통한 개발 전략
NAVER Engineering
 
Scala 기초 (2)
Scala 기초 (2)Scala 기초 (2)
Scala 기초 (2)
명성 정
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)
규열 김
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2destinycs
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기
productab180
 

Similar to Java 8 api :: lambda 이용하기 (15)

2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
 
조리돌림 JAVA8 기반의 기능.pptx
조리돌림 JAVA8 기반의 기능.pptx조리돌림 JAVA8 기반의 기능.pptx
조리돌림 JAVA8 기반의 기능.pptx
 
자바 8
자바 8자바 8
자바 8
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
Linq
LinqLinq
Linq
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
 
9 swift 클로저1
9 swift 클로저19 swift 클로저1
9 swift 클로저1
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java jungsuk3 ch14_lambda_stream
Java jungsuk3 ch14_lambda_streamJava jungsuk3 ch14_lambda_stream
Java jungsuk3 ch14_lambda_stream
 
[15]Android Kotlin을 통한 개발 전략
[15]Android Kotlin을 통한 개발 전략[15]Android Kotlin을 통한 개발 전략
[15]Android Kotlin을 통한 개발 전략
 
Scala 기초 (2)
Scala 기초 (2)Scala 기초 (2)
Scala 기초 (2)
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기
 

Java 8 api :: lambda 이용하기

  • 2. • Lambda(ƛ) 표현식 • 함수형 인터페이스 • stream( )
  • 4. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계 > 이와 같은 함수를 LAMBDA(ƛ) 표현식 링크 : closure와 currying
  • 5. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계 > 이와 같은 함수를 > 이렇게 축약할 수 있습니다. ( lambda 표현식 ) LAMBDA(ƛ) 표현식 링크 : closure와 currying
  • 6. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계 > 이와 같은 함수를 > 이렇게 축약할 수 있습니다. ( lambda 표현식 ) > 또한, 이렇게도 가능합니다. ( currying 방식) • 프로그래밍에서 -> 익명 메소드 LAMBDA(ƛ) 표현식 링크 : closure와 currying
  • 7. LAMBDA(ƛ) 표현식 - 문법 • 기본문법 > ( 매개변수 ) -> { 실행시킬 구문 } • 대상 메소드를 자동으로 찾고, 람다식 만 적용
  • 8. LAMBDA(ƛ) 표현식 - 문법 • 응용문법
  • 9. LAMBDA(ƛ) 표현식 - 하급 예제 • 단순한 for문 비교 • lambda식 > stream()을 사용하여 0~10 미만의 수를 포함한 stream 을 생성 > forEach (i -> { … } 문법 사 용 ) > 매개변수 i
  • 10. LAMBDA(ƛ) 표현식 - 중급 예제
  • 11. • 장점 > 코드의 수 감소 > 메소드로 행동방식을 전달 > 추상화로 개발자의 의도를 명확하게 하도록 도움 • 단점 > 람다식을 실행할때에는 인터페이스에 선언된 메소드를 호출하여야 한다. > 재귀 람다식의 호출이 까다롭다. > 클로저가 지원되지 않는다. LAMBDA(ƛ) 표현식 - 장/단점
  • 12. • 함수형 인터페이스 (Functional Interface) > 개념 소개 > @FunctionalInterface 적용 유무 > 추상 메소드가 여러개일때 > default 메소드
  • 13. 함수형 인터페이스 • 추상메소드가 1개 뿐인 인터페이 스를 함수형 인터페이스라 합니 다. • @FunctionalInterface > 함수형 인터페이스임을 명시 > 추상메소드가 두개 이상이라 면 컴파일 오류를 발생 > 없어도 함수형 인터페이스로 서 사용 가능( => 기존 인터 페이스도 람다식 사용 가능 )
  • 14. 함수형 인터페이스 - Annotation 비교
  • 16. 함수형 인터페이스 - 예외 메소드 • 구현이 되어있는 default, static 메소드는 추가로 더 있어도 무방 • default 메소드 > JAVA 8 이 되면서 생긴 인터 페이스의 메소드 형태 > Default methods are defined with the default modifier => default 메소드는 기본적으 로 사용될 형태로 정의 된다.
  • 17. 함수형 인터페이스 - 기타 • http://docs.oracle.com/javase/8/docs/api/java/util/function/package- summary.html => 람다표현식을 타겟으로 한 공식제공 인터페이스 • default 메소드 탄생으로 인한 다중 상속의 모호성이 대두됨