IT/development

[Java] Java Lambda ์ •๋ฆฌ(jdk 1.8๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 23.

๋ชฉ์ฐจ

    image source:https://unsplash.com/s/photos/java

    ์—ฐ์ฐจ๋Š” ์Œ“์ด๋Š”๋ฐ ๊ณต๋ถ€๋Š” ๋์ด ์—†๊ณ  ์•„์ง ๋ชจ๋ฅด๋Š”๊ฒŒ ๋„ˆ๋ฌด ๋งŽ๋‹ค.

    ๊ทธ๋ž˜์„œ ๋…ธ์‡ ํ•ด์„œ ์ฝ”๋”ฉ์„ ๋ชปํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊พธ์ค€ํžˆ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•ด์„œ ๋ฉ”๊ฟ€ ์ƒ๊ฐ์ด๋‹ค.

    Java Lambda ์ •๋ฆฌ(java 1.8 ์ด์ƒ๋ถ€ํ„ฐ ๊ฐ€๋Šฅ)

    Java์˜ Lambda์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋’ค ์ด๋ฅผ ๊ธฐ๋กํ•ด ๋ณด๊ฒ ๋‹ค.๐Ÿ˜ƒ

    java์˜ ๋žŒ๋‹ค์‹์€ ์ต๋ช…๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‘œํ˜„์‹์ž„(์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๋Š”๊ฒŒ ์—ญ์‹œ ๋น ๋ฅด๋‹ค.)


    image source:https://ko.wikipedia.org/wiki/%CE%9B

    ๋žŒ๋‹คํ•จ์ˆ˜๋ž€?๐Ÿ™„

    ๋”๋ณด๊ธฐ

    ๋žŒ๋‹คํ•จ์ˆ˜์˜ ๊ฐœ๋…์€ ๋‚˜๋ฌด์œ„ํ‚ค๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ๋‚˜์™€์žˆ๋‹ค.

    ๋žŒ๋‹ค์‹, ๋˜๋Š” ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ต๋ช… ํ•จ์ˆ˜(๏งซๅๅ‡ฝๆ•ธ, Anonymous functions)๋ฅผ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ด๋‹ค. 

    ์ต๋ช…ํ•จ์ˆ˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜์ด๋‹ค.

    ์ต๋ช…ํ•จ์ˆ˜๋“ค์€ ๊ณตํ†ต์œผ๋กœ ์ผ๊ธ‰๊ฐ์ฒด(First Class citizen)๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

    ์ด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๋ณดํ†ต ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„˜๊ธฐ๊ธฐ, ์ˆ˜์ •ํ•˜๊ธฐ, ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๊ธฐ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ง€์›ํ•  ๋•Œ ์ผ๊ธ‰ ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค๊ณ  ์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋‚˜์™€์žˆ๋‹ค.

    ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ(ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์‹์œผ๋กœ ํ‘œํ˜„)

    ๋žŒ๋‹ค์˜ ์žฅ๋‹จ์ ๐Ÿค”

    ๋žŒ๋‹ค์˜ ์žฅ์ 

    1. ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐ์„ฑ : ๋žŒ๋‹ค ์‚ฌ์šฉ ์‹œ ๋ถˆ ํ•„์š”ํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์ค„์ด๊ณ  ๋ณต์žกํ•œ ์‹์„ ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅ

    2. ์ง€์—ฐ์—ฐ์‚ฐ ์ˆ˜ํ–‰ : ๋žŒ๋‹ค๋Š” ์ง€์—ฐ์—ฐ์ƒ์„ ์ˆ˜ํ–‰ ํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ์ตœ์†Œํ™” ๊ฐ€๋Šฅ

    ์ง€์—ฐ์—ฐ์‚ฐ์ด๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ํ”ผํ•˜๋ ค๊ณ  ์—ฐ์‚ฐ์„ ์ง€์—ฐ์‹œํ‚ด์„ ์˜๋ฏธํ•œ๋‹ค.

    3. ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ : ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

    ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ž€ ์‰ฌ์šด ์˜ˆ๋กœ ํ•˜๋‚˜์˜ ์ผ(ํ”„๋กœ๊ทธ๋žจ)์„ ์—ฌ๋Ÿฌ ๋ช…(ํ”„๋กœ์„ธ์„œ)์ด์„œ ๋‚˜๋ˆ ์„œ ํ•จ์œผ๋กœ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฑธ ์˜๋ฏธํ•œ๋‹ค.

    ์šฐ๋ฆฌ๋‚˜๋ผ ์†๋‹ด์œผ๋กœ ๋”ฐ์ง€๋ฉด "๋ฐฑ์ง€์žฅ๋„ ๋งž๋“ค๋ฉด ๋‚ซ๋‹ค"

    ๋žŒ๋‹ค์˜ ๋‹จ์ 

    1. ๋žŒ๋‹ค์‹์˜ ํ˜ธ์ถœ์ด ๊นŒ๋‹ค๋กญ๋‹ค.(๋ฌธ๋ฒ•์„ ๋ชจ๋ฅด๋ฉด ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์„ ๋“ฏ)

    2. ๋žŒ๋‹ค stream ์‚ฌ์šฉ ์‹œ ๋‹จ์ˆœ ๋ฐ˜๋ณต๋ฌธ(for, while) ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง

    3. ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‚จ์šฉ ์‹œ ์˜คํžˆ๋ ค ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด ๋œจ๋ฆด ์ˆ˜ ์žˆ์Œ

    4. ๋žŒ๋‹ค๋กœ ๋งŒ๋“  ํ•จ์ˆ˜๋Š” ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€

    5. ๋””๋ฒ„๊น…์ด ๊นŒ๋‹ค๋กœ์›€

    ์—ญ์‹œ ์ด๋ก ๋ณด๋‹ค๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋Š”๊ฒŒ ๋‚œ ๋” ์ดํ•ด๊ฐ€ ๋น ๋ฅผ ๊ฒƒ ๊ฐ™๋‹ค.

    ๋žŒ๋‹ค์‹ ์ฝ”๋“œ๐Ÿ˜Ž

    ๋žŒ๋‹ค์‹ ์ด์ „ java ๋ฌธ๋ฒ•

    ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ๋‹คํ˜•์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ธํ„ฐํŽ˜์ด์Šค(Goods)๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค(Computer)๋ฅผ ๋งŒ๋“  ๋’ค ์‚ฌ์šฉ ์‹œ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜(com)์— ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์•„๋ž˜์ฒ˜๋Ÿผ ์‹คํ–‰ํ•˜๋Š” ์ชฝ์—์„œ ์ต๋ช… ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ์—ˆ์Œ

    ์ผํšŒ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋งŒ์ผ Goods ๊ตฌํ˜„์ฒด๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋˜์–ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์œ„์ฒ˜๋Ÿผ

    ์ต๋ช… ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์‚ฌ์šฉ ์‹œ ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ์ง€์ €๋ถ„ํ•ด์งˆ ๊ฒƒ์ž„

    ๋žŒ๋‹ค์‹

    ๊ตฌํ˜„์ฒด์˜ ์ถœ๋ ฅ๋ฌธ์„ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์—์„œ ๋žŒ๋‹ค์‹์œผ๋กœ ๋ฐ”๋กœ ์ถœ๋ ฅ๋ฌธ์„ ์ •์˜ํ–ˆ์Œ

    ํ•ต์‹ฌ์€ ๋งค๊ฐœ๋ณ€์ˆ˜ + ์‹คํ–‰๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋จ(์ ‘๊ทผ์ž, ๋ฐ˜ํ™˜ํ˜• ๋ชจ๋‘ ์ƒ๋žต๋˜๋Š” ๊ตฌ์กฐ์ž„)

    () -> {} ํ˜•ํƒœ์ด๊ณ  ์ฒซ ๊ด„ํ˜ธ()์— ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋จ

    ๊ทธ ๋‹ค์Œ ->๋ฅผ ์ž…๋ ฅ ํ›„ ์ค‘๊ด„ํ˜ธ{} ์•ˆ์— ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋จ

    Ob ob = new Ob(); ์ธ์Šคํ„ด์Šคํ™” ํ•  ํ•„์š” ์—†์Œ

    ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  (๋งค๊ฐœ๋ณ€์ˆ˜)๋ฅผ ์ด์šฉํ•ด์„œ -> {์ˆ˜ํ–‰์ฝ”๋“œ} ์ด๊ฑธ ๋ฐ”๋กœ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋  ๋“ฏ

    ๋žŒ๋‹ค์‹ ์˜ˆ์ œ๐Ÿคก

    1. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•( (ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜)-> {}; )

    ๋žŒ๋‹ค์‹์— ํ•„์š”ํ•œ ๊ธฐํ˜ธ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ

    2. ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ์ƒ๋žต( (๋งค๊ฐœ๋ณ€์ˆ˜)-> {}; )

    ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ ์ด๊ฑฐ๋‚˜ 2๊ฐœ ์ด์ƒ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์ด ๋ชจ๋‘ ๊ฐ™์„ ๊ฒฝ์šฐ ํƒ€์ž… ์ƒ๋žต ๊ฐ€๋Šฅ

    ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ๊ฐ™์€ ๊ฒฝ์šฐ

    ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ

    3. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ( ()-> {}; )

    ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ ์ฝ”๋“œ ๋ชธํ†ต๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š”๋ฐ ๋งŒ์ผ return type์ด ์žˆ๋Š” ๊ฒฝ์šฐ return ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    4. ์ค‘๊ด„ํ˜ธ ์ƒ๋žต( ()->; )

    ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ 1๊ฐœ์ผ ๋•Œ๋Š” ์ค‘๊ด„ํ˜ธ{}๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ, ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์€ return์ด ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ return ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•ด์•ผ ํ•จ

    ์˜ˆ์ œ์— ์‚ฌ์šฉ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” return type์ด int์ด๊ธฐ์— return์„ ์ƒ๋žตํ•ด์•ผ ํ•œ๋‹ค.

    return ๋ถ™์ผ ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ ์—๋Ÿฌ ๋ฐœ์ƒ

    5. ์†Œ๊ด„ํ˜ธ ์ค‘๊ด„ํ˜ธ ์ƒ๋žต( ๋งค๊ฐœ๋ณ€์ˆ˜ -> ; )

    ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ด๊ณ  ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๋„ 1๊ฐœ์ด๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ()์™€ {} ์ƒ๋žต ๊ฐ€๋Šฅ(๋ฉ”์†Œ๋“œ return type์ด void์—ฌ์•ผ ํ•จ)

    ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์˜ return type์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” {} ์ƒ๋žต ๋ถˆ๊ฐ€

    ์œ„ ์ƒํƒœ์—์„œ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์˜ return type์„ int๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์—๋Ÿฌ๋ฐœ์ƒ

    String ํƒ€์ž… ๋žŒ๋‹ค์‹ 

    ์‚ฌ์šฉ ์˜ˆ์ œ ์ฝ”๋“œ

    ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค

    @FunctionalInterface
    public interface Caculator {
    	// return type void๋กœ ๋ฐ”๊ฟจ๋‹ค int๋กœ ๋ฐ”๊ฟจ๋‹ค, ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€ ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ
    	public int cal(int num1);
    }

    ๋žŒ๋‹ค์‹ ์ฝ”๋“œ

    public class Test2 {
    	public static void main(String[] args) {
    		// ๋žŒ๋‹ค์‹ ๋ชจ๋“  ๊ธฐํ˜ธ ์‚ฌ์šฉ
    		//Caculator cal = (int n1, int n2) -> {return n1 + n2;};
    		//System.out.println(cal.cal(1000, 20000));
    		// ํƒ€์ž… ์ƒ๋žต(๋งค๊ฐœ๋ณ€์ˆ˜ 2๊ฐœ ํƒ€์ž…์ด ๊ฐ™์Œ)
    		//Caculator cal2 = (n1, n2) -> {return n1+n2;};
    		//System.out.println(cal2.cal(10, 200));
    		// ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ๋žต
    		//Caculator cal3 = () -> System.out.println("๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์Œ");
    		//cal3.cal();
    		// ์ค‘๊ด„ํ˜ธ ์ƒ๋žต(์ˆ˜ํ–‰์ฝ”๋“œ 1๊ฐœ)
    		//Caculator cal = (n1) -> n1 + 1000;
    		//System.out.println(cal.cal(1000000));
    		// ์†Œ๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ ์ƒ๋žต(๋งค๊ฐœ๋ณ€์ˆ˜ 1๊ฐœ, ์ˆ˜ํ–‰์ฝ”๋“œ 1๊ฐœ)
    		//Caculator cal = n1 -> System.out.println(n1);
    		//cal.cal(10000);
    		//Caculator cal = n1 -> n1 + 10000;
    		//cal.cal(10000);
    	}	
    }

     

    ๋žŒ๋‹ค ์‚ฌ์šฉ ์กฐ๊ฑด๐Ÿค—

    ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ์กฐ๊ฑด์ด ์žˆ์Œ, ๋ฐ”๋กœ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ์–ด์•ผ ํ•จ

    ๋žŒ๋‹ค์‹์€ ์ต๋ช…ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์†Œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋ฅผ ์ต๋ช…ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•œ ๊ฑด์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.

    ์ด๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ์ง€๋งŒ ์ œ์ผ ๋ช…ํ™•ํ•œ ๊ฒƒ์€ @FunctionalInterface์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

    ์•„๋ž˜์ฒ˜๋Ÿผ ๋žŒ๋‹ค์‹ ํ‘œํ˜„์— ์‚ฌ์šฉ๋  ์ธํ„ฐํŽ˜์ด์Šค์— @FunctionalInterface์„ ๋ถ™์ด๋ฉด ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ์—๋Ÿฌ๋ฅผ ์žก์•„์คŒ

    ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์— ์•„๋ž˜์ฒ˜๋Ÿผ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ 1๊ฐœ ๋” ๋งŒ๋“ค ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œํ‚ด

    ๋žŒ๋‹ค์‹ ์‚ฌ์šฉ ์ธํ„ฐํŽ˜์ด์Šค์— @FunctionalInterface์„ ๋ถ™์ด๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅผ ๊ฒƒ

    ์ฐธ์กฐ : ํžˆ์ง„์“ฐ์˜ ์„œ๋ฒ„์‚ฌ์ด๋“œ ๊ธฐ๋ถˆ ๋ธ”๋กœ๊ทธ, 2018.09.28, https://khj93.tistory.com/entry/JAVA-%EB%9E%8C%EB%8B%A4%EC%8B%9DRambda%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%82%AC%EC%9A%A9%EB%B2%95

     

    [JAVA] ๋žŒ๋‹ค์‹(Lambda)์˜ ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•

    ๋žŒ๋‹คํ•จ์ˆ˜๋ž€? ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ต๋ช… ํ•จ์ˆ˜(Anonymous functions)๋ฅผ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋žŒ๋‹ค์˜ ๊ทผ๊ฐ„์€ ์ˆ˜ํ•™๊ณผ ๊ธฐ์ดˆ ์ปดํ“จํ„ฐ๊ณผํ•™ ๋ถ„์•ผ์—์„œ์˜ 

    khj93.tistory.com

     

    ๋ฐฐ์›€์ด ์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ์ž, 2019,04,09, https://galid1.tistory.com/509

     

    Java - Lambda Expression(๋žŒ๋‹ค์‹)์ด๋ž€?

    ๋žŒ๋‹ค์‹์ด๋ž€ ๋žŒ๋‹ค์‹ ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”. ๊ทธ ๋™์•ˆ java๋ฅผ ์ด์šฉํ•˜๋‹ค๊ฐ€ lambda์‹ ์ด๋ž€ ๊ฒƒ์„ ์ฒ˜์Œ ๋ณด์•˜์„๋•Œ๋Š” ๋งค์šฐ ์ƒ์†Œํ•˜๊ณ  ๊ฑฐ๋ถ€๊ฐ์ด ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, java8์—์„œ ์ถ”๊ฐ€๋œ stream๊ณผ ๊ฐ™์€๊ณณ์—์„œ ํ•œ๋‘๋ฒˆ

    galid1.tistory.com

    ํ‹€๋ฆฐ ์  ์žˆ์„ ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.๐Ÿ˜…

    ๋Œ“๊ธ€