Bibi's DevLog ๐ค๐
[TIL - Codesquad] ๋ฏธ์ 5 - ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋๋ค ํํ์, ํด๋ก์ , ์คํธ๋ฆผ ๋ณธ๋ฌธ
[TIL - Codesquad] ๋ฏธ์ 5 - ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋๋ค ํํ์, ํด๋ก์ , ์คํธ๋ฆผ
๋น๋น bibi 2021. 1. 18. 21:23[210118]
๊ตฌ๊ธ๋ง, ๊ธฐ๋ณธ์, ๊ทธ๋ฃน๋ฆฌ๋ทฐ๋ฅผ ํตํด ์๋ก์ด ๊ฐ๋
์ ๋ง์ด ์๊ฒ ๋ ๋ ์ด๋ค.
๊ณต๋ถ๋ ์ด์ฌํ ํด์ ๋ฟ๋ฏํ๊ธด ํ๋ฐ ๋ฏธ์
์งํ์ด ์ ๋์ด์ ์ฐ์ฐํ๋ค.
TIL ์ฌ๋ฆฌ๊ณ ๋ฏธ์
ํ์ด๋ฅผ ์ข ์๊ฐํด๋ด์ผ๊ฒ ๋ค.
TIL
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋?
์์ํจ์์ ๊ฐ๋
์ธํ๊ณผ ์์ํ์ด ์๋ค.
(์ค๊ฐ ๊ฒฐ๊ณผ๋ฌผ์)์ธํ์ผ๋ก ๋ฐ์ ๊ฐ์ ๋งก์ ์์ ์ ํ๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ์์ํ์ผ๋ก ๋ด๋ณด๋.
์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ฒ๋ผ ํจ์๋ค์ ์์๋๋ก ์์ ์๊ฒ ์ฃผ์ด์ง ์ผ๋ค๋ง ํ๋ค.์ธ๋ถ ํ๊ฒฝ์ผ๋ก๋ถํฐ ์ฒ ์ ํ ๋ ๋ฆฝ์ ์ด๋ค. (์ธ๋ถ ์์ธ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค)
์ด๋ค ๊ฐ์ ์ฐธ์กฐํ์ง ์๊ณ ์ค๋ก์ง ์ฃผ์ด์ง ๊ฐ๋ค๋ก ์ ํด์ง ์์ ๋ง ํ๋ค.(2.๋๋ถ์) ๊ฐ์ ์ธํ์ผ ๋ ์ธ์ ๋ ๊ฐ์ ์์ํ์ ๋ด๋ณด๋ธ๋ค.
-๋ค๋ฅธ ํจ์๋ค์๊ฒ๋ ์์ํ ์ธ์ ์๋ฌด ์ํฅ์ ๋ผ์น์ง ์๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ์ข์ ์ด์ ?
๋น ํจ์ํ ํ๋ก๊ทธ๋จ๊ณผ ๋น๊ตํ์ ๋, ๋ณ์์ ์ํฅ์ ๋ฐ์ง ์์ ๋ ์์ ์ ์ด๋ค.
์ธ๋ถ์์ ์ฐธ์กฐ๋ณ์ ๊ฐ์ ๋ฐ๊พธ๋ ๋ฑ์ ์ฌ๊ณ (๋ถ์์ฉ)๊ฐ ์ผ์ด๋์ง ์๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ฐ ๋ถ์์ฉ์ผ๋ก๋ถํฐ ์์ ๋ก์ ์ฃผ๋ชฉ๋ฐ๊ฒ ๋จ.
๋ถ์์ฉ์ ์๋ฏธ
: ์ด๋ค ํจ์์ ๋์์ ์ํด, ํ๋ก๊ทธ๋จ ๋ด ํน์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ ์ํฉ.
๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋จ์์, ํ ๋ณ์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ์ ๊ทผํ ๋ ๋ถ์์ฉ์ด ๋ฐ์ํ๊ธฐ ์ฝ๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋์ผ๋ก ์ฐ๋ ๋ ๋์์ ์กฐ์ ํ ์ ์์ง๋ง, ๊ณ ๋ คํ ์์๊ฐ ๋๋ฌด ๋ง๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
->ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํจ์ ๋์์ ์ํ ๋ณ์์ ๊ฐ ๋ณ๊ฒฝ์ ์์ฒ ๋ฐฐ์ ํจ์ผ๋ก์จ ์ด๋ฐ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ค. ์ธ๋ถ ๋ณ์๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ๊ทธ ๊ฐ์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ด ์๋, ์ธ์๋ก ๋ณต์ฌํด๊ฐ์ ์์
ํ๋ค.
ํจ์ํ ํ๋ก๊ทธ๋จ์ด ์๋ฌด๋ฐ ์ํ๋ณํ๋ฅผ ์ผ์ผํค์ง ์๋๋ค๋ ๋ง์ด ์๋๋ค.
๋ชจ๋ ์ฝ๋๋ฅผ ํจ์ํ์ผ๋ก ์ง ๋ค๋ ๋ง์ด ์๋๋ผ, ์ ์ด๋ ์ด๋ค ๋จ์์ ์์
์ ์์ด์ ๋ถ์์ฉ ์์ด ์์ ์ ์ด๊ณ ์์ธก๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ์ง ๋ค๋ ๊ฒ์ด๋ค.
ํจ์ํ ํ๋ก๊ทธ๋จ์ ๋ํ ํน์ง
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ธํ์ด๋ค.
'ํจ์ํ' ํ๋ก๊ทธ๋๋ฐ ์ด์ ๊น์ง ํ๋ ํ๋ก๊ทธ๋๋ฐ์ '๋ช ๋ นํ' ํ๋ก๊ทธ๋๋ฐ์ ํด๋นํ๋ค.
- ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ : A๋ B์ ์ํธ์์ฉํ๊ณ C๋ผ๋ ๊ฐ์ ์ฐธ์กฐํด์ D๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ผ.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ : A-B-C-D-E์์ ์ F๋ผ๋ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๊ฐ๋ค.
์์ํจ์๋ค์ ์ธํ๋ง ๋๊ฐ์ผ๋ฉด ๋ฐ๋์ ์์ํ๋ ๋๊ฐ๋ค. (์ธ๋ถ๋ณ์ ์ํฅ X)
-> ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ABCDE์์ ์ ์ ํด์ง ์ธํ์ ๋ฃ์ผ๋ฉด ๋ฐ๋์ ์ ํด์ง ์์ํ์ด ์ฐ์ถ๋๋ค๊ณ ์ ๋ขฐํ ์ ์๋ค.๋ช ๋ นํ์์๋ ๋ณ์๋ง 'A๋ B์ด๋ค'๋ผ๊ณ ์๊ฐํ๊ณ , ํจ์๋ ํ์ ๊ฐ๋ ์ผ๋ก๋ง ์๊ฐํ์ ๊ฒ.
ํ์ง๋ง ํจ์ํ์์๋ ํจ์๋ ๋ณ์์ฒ๋ผ ์๊ฐํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐํด์ผ ํ๋ค.
(ํจ์๋ฅผ '๊ฐ'์ ๊ฐ๋ ์ผ๋ก ์๊ฐํ๋ค)
ํจ์๋ '๊ฐ'์ด๋ค.
- ํจ์๊ฐ '๊ฐ'์ด๋ผ๊ณ ํด์ ์ซ์/๋ฌธ์์ด/๊ฐ์ฒด ๊ฐ์ ๋ช ํํ ๊ฒฐ๊ณผ๊ฐ์ด ๋์ถ๋๋ ๊ฑด ์๋๋ค.
- ์์ํจ์๋ผ๋ ๊ฐ์ ํ์, ๊ฐ์ ์ธํ์ผ ๋ ์์ํ์ด ์ผ์ ํ๋ฏ๋ก
'์์ธก๊ฐ๋ฅํ ๊ฐ์ ์ฐ์ถํ ์ํ' ๋ผ๋ ๊ฐ์ผ๋ก ์ด ํจ์๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
๊ณ ์ฐจํจ์(HOF - Higher Order Function)
- ํจ์๋ฅผ '๊ฐ'์ผ๋ก ๋ณผ ์ ์๋ค๋ฉด, ํจ์๋ฅผ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ๋ฃ์ด์ค ์ ์๋ค.
- ๋งค๊ฐ๋ณ์๋ก ๋ค๋ฅธ ํจ์๋ฅผ ๋ฐ๋ ํจ์ / ๋ค๋ฅธ ํจ์๋ฅผ ๋ฆฌํด๊ฐ์ผ๋ก ๋ฐํํ๋ ํจ์๋ฅผ '๊ณ ์ฐจํจ์(๊ณ ๊ณํจ์)'๋ผ๊ณ ํ๋ค.
- ๊ณ ์ฐจํจ์๋ฅผ ํตํด ๋ ์ ์ฐํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค.
์ปค๋ง
- ์ฌ๋ฌ ์ธ์๋ฅผ ๋ฐ๋ ํจ์์ ์ผ๋ถ ์ธ์๋ง ๋ฃ์ด์, ๋๋จธ์ง ์ธ์๋ฅผ ๋ฐ๋ ๋ค๋ฅธํจ์๋ฅผ ๋ง๋ค์ด๋ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ.
ํจ์ ์ปด๋น๋ค์ดํฐ
- ํจ์ํ ์ธ์ด / ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ปฌ๋ ์ ๋ด ์์๋ค์ ๋ค์ํ๊ฒ, ์ฐ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ง์ ๋๊ตฌ๋ค์ด ํฌํจ๋์ด ์๋ค. - ์๋ฐ ์คํธ๋ฆผ์ฒ๋ผ.
- ์ค์ํ ๊ฐ๋ฅ์ฑ์ด ์์ง๋ง ๋ถ๊ฐํผํ๋ for๋ฌธ ๋ฑ์ ์์
๋ค์, ๋๊ตฌ๋ค์ ์ด์ฉํด ๊ฐ๊ฒฐํ๊ฒ ํ ์ ์๋ค. filter, take, map ๋ฑ..
- for๋ฌธ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ์์๋ค์ ์ด๋ค ๋ณ์์ ์ํ๋ณํ(๋ถ์์ฉ)์ ํ์๋ก ํ๋ค.
๋ฐ๋ผ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ถ์์ฉ์ ์ผ์ผํค์ง ์๋ ์ฌ๊ทํจ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
- for๋ฌธ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ์์๋ค์ ์ด๋ค ๋ณ์์ ์ํ๋ณํ(๋ถ์์ฉ)์ ํ์๋ก ํ๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋? ์ ๋ฆฌ
๊ฐ๋ณ์ ์ธ ์ํ๋ฅผ ๋ถ๋ณํ๋ ์ํ(Immutable)๋ก ๋ง๋ค์ด side effect๋ฅผ ์์ค๋ค.
- f(x) = y : ํจ์ f์ x๋ฅผ ์ ๋ ฅํ๋ฉด ํญ์ y๊ฐ ๋์จ๋ค.
- ํจ์ ๋ด์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ํ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋๋ค. (์ธ๋ถ ์ํ๋ ์ฌ์ฉํ์ง ์๋๋ค)
- ๋ณ์๋ณด๋ค ์์๋ฅผ ์ฌ์ฉํ๋ค.
ํจ์๋ ๊ฐ์ฒด์ด๋ค : ํจ์๋ 1๊ธ ๊ฐ์ฒดfirst-class citizen์ด๋ค.
- 1๊ธ ๊ฐ์ฒด๋?
- ์๋ 3๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๊ฐ์ฒด์ด๋ค.
- ๋ณ์๋ ๋ฐ์ดํฐ์ ํ ๋นํ ์ ์๋ค.
- ๊ฐ์ฒด์ ์ธ์๋ก ๋๊ธธ ์ ์๋ค.
- ๊ฐ์ฒด์ ๋ฆฌํด๊ฐ์ผ๋ก ๋ฆฌํดํ ์ ์๋ค.
- ์๋ 3๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๊ฐ์ฒด์ด๋ค.
- ์๋ฐ์์๋ ์๋ฐ8์ดํ ํจ์๋ 1๊ธ ๊ฐ์ฒด๊ฐ ๋์๋ค.
- 1๊ธ ๊ฐ์ฒด๋?
์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ๊ณ , ๊ฐ๋ ์ฑ์ ๋์ฌ ๋ก์ง์ ์ง์ค์ํจ๋ค.
- Lambda / Collection / Stream๊ฐ์ API๋ฅผ ํตํด ์ง์ ์ ์ธ ํจ์ ํธ์ถ์ ํจ์ผ๋ก์จ ๊ฐ๋ ์ฑ์ ๋์ธ๋ค.
- ์ผ์ ์ํ ์ผ์ด ์ค์ด๋ค์ด, ์ค์ ๋ก์ง์๋ง ์ง์คํ ์ ์๋ค.
๋์์ฑ ์์ ์ ์ฝ๊ณ ์์ ํ๊ฒ ๊ตฌํํ๋ค.
- immutableํ ๊ฐ์ ์ฌ์ฉํด, ๋ฉํฐ์ฐ๋ ๋์ ์์ ํ๋ฉฐ ๋ณดํธ์ฅ์น(lock/unlock)๊ฐ ํ์์๋ค.
๋ด๋ถ ํด๋์ค inner class
- (์บก์ํ encapsulation์ ํ ๋ฐฉ๋ฒ) ํ๋์ ํด๋์ค์์ ์ด๋ค ๊ณตํต์ ์์ ์ ์ํํ๋ ํด๋์ค๊ฐ ํ์ํ๋ฐ, ๋ค๋ฅธ ํด๋์ค์์๋ ๊ทธ ํด๋์ค๊ฐ ์ ํ ํ์๊ฐ ์์ ๋ ๋ด๋ถ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค.
์ต๋ช ํด๋์ค Anonymous class๋?
๋ด๋ถํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด '์ต๋ช ํด๋์ค'๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
ํธ์ถํ๋ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋, ์์ฑ์๋ง ํธ์ถํด ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ ํด๋์ค.
- ์๋๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ํด๋์ค ๋ด์ ๋ฉ์๋๋ฅผ ๋ง๋ ๋ค์ ๊ทธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํด์ผ ํ๋ค.(๋ณต์ก)
- ์ต๋ช ํด๋์ค๋ ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ณผ์ ๋ด์ ์ต๋ช ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ ์ธํด ์ฌ์ฉํ ์ ์๋ค.
์ต๋ช ํด๋์ค์ ์ฅ์
- ๋ฉ์๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ๋ ๋ฉ์๋๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๊ฒ ํจ.
- ํด๋์ค๋ฅผ ๋ง๋๋ ๋ฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น์ ์ฑ๋ฅ ํ๋ฝ์ ๋ฐฉ์งํจ.
์ต๋ช ํด๋์ค์ ๋จ์
ํธ์ถํ๋ ๋ฉ์๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค.
ํด๋์ค ์ด๋ฆ๋, ๊ฐ์ฒด ์ด๋ฆ๋ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํด๋์ค/๋ฉ์๋์์ ์ฌ์ฌ์ฉํ ์ ์๋ค.
(๋ด๋ถ ํด๋์ค, ์ต๋ช ํด๋์ค ๋ชจ๋ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฌ์ฉํ ์ผ์ด ์์ ๋ ๋ง๋ค์ด์ผ ํ๋ค.)
๋๋ค ํํ์ Lambda expression
- ์ต๋ช
ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋์ ๋ฎ์ ๊ฐ๋
์ฑ๊ณผ ๋ถํธํจ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํจ.
- ๋๋คํํ์๊ณผ ์ต๋ช ํด๋์ค๋ ์๋ก ์ ํ์ด ๊ฐ๋ฅํ๋ค.
- (์กฐ๊ฑด) ๋๋ค์์ ๊ธฐ๋ฅ์ ์ธํฐํ์ด์ค์๋ง ์ ์ฉ์ด ๊ฐ๋ฅํจ.
๊ธฐ๋ฅ์ ์ธํฐํ์ด์ค Functional Interface
: ํ๋์ ๋ฉ์๋๋ง ์ ์ธ๋์ด ์๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํจ.
๋๋ค ํํ์์ ๊ตฌ์ฑ
(int x, int y) -> x + y
- ๋งค๊ฐ ๋ณ์ ๋ชฉ๋ก
(int x, int y)
- ๋๊ฒจ์ง๋ ๋งค๊ฐ๋ณ์๋ค์ ํ์ ์ด ์ ์ธ๋๋ค.
- ํ์ดํ ํ ํฐ Arrow Token
->
- ํ์ดํ ์ฐ์ฐ์๋ผ๊ณ ๋ ํ๋ค.
- ์ฒ๋ฆฌ์
x + y
- ๋ฆฌํด๋๋ ๊ฐ์ ํ์ํ๋ค.
ํด๋ก์ closure ๋?
์ํค๋ฐฑ๊ณผ
ํด๋ก์ ๋ ์ผ๊ธ ๊ฐ์ฒด ํจ์(first-class functions)์ ๊ฐ๋
์ ์ด์ฉํ์ฌ ์ค์ฝํ์ ๋ฌถ์ธ ๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํ๊ธฐ ์ํ ์ผ์ข
์ ๊ธฐ์ ์ด๋ค.
๊ธฐ๋ฅ์์ผ๋ก, ํด๋ก์ ๋ ํจ์๋ฅผ ์ ์ฅํ ๋ ์ฝ๋์ด๋ฉฐ, ์ค์ฝํ์ ์ธ์factor๋ค์ ํด๋ก์ ๊ฐ ๋ง๋ค์ด์ง ๋ ์ ์๋๋ค. ์ค์ฝํ ๋ด์ ์์ญ์ด ์๋ฉธ๋์์ด๋ ๊ทธ์ ๋ํ ์ ๊ทผ์ ๋
๋ฆฝ๋ ๋ณต์ฌ๋ณธ์ธ ํด๋ก์ ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง ์ ์๋ค.
ํธ๋
์ค ์..
: ํด๋ก์ ๋ ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์์ ์ ๊ทผํ์ ๋ ๋ง๋ค์ด์ง๋ record / ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ํ์ฝ๋ฉ
๋ด๋ถํจ์๊ฐ ์ธ๋ถํจ์์ ๋งฅ๋ฝcontext์ ์ ๊ทผํ ์ ์๋ ๊ฒ์ ๊ฐ๋ฆฌํจ๋ค.
๋ด๋ถํจ์๋ ์ธ๋ถํจ์์ ์ง์ญ๋ณ์์ ์ ๊ทผํ ์ ์๋๋ฐ, ์ธ๋ถํจ์์ ์คํ์ด ๋๋ ์ธ๋ถํจ์๊ฐ ์๋ฉธ๋ ์ดํ์๋ ๋ด๋ถํจ์๊ฐ ์ธ๋ถํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ ๋งค์ปค๋์ฆ.
์ธ๋ถํจ์๋ ์ธ๋ถํจ์์ ์ง์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ด๋ถํจ์๊ฐ ์๋ฉธ๋ ๋ ๊น์ง ์๋ฉธ๋์ง ์๋ ํน์ฑ์ ๊ฐ์ง๋ค.
[์๋ฐ] ์คํธ๋ฆผ stream ์ด๋?
์ฝ๋ฉํฉํ ๋ฆฌ ๋ฐ ์๋ฐ๊ธฐ๋ณธ์.
์คํธ๋ฆผ์ Collection์ ์ ์ฅ ์์๋ฅผ ํ๋์ฉ ์ฐธ์กฐํด ๋๋ค์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ๋ณต์์ด๋ค.
Iterator์ ๋น์ทํ์ง๋ง ๋๋ค์์ ์ธ ์ ์์ด ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๋ค.
๋ด๋ถ ๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํด ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ์ฝ๋ค.
์คํธ๋ฆผ ๊ฐ์ฒด๋
java.util.stream
ํจํค์ง์ Stream ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋ค.๋ฐฐ์ด์๋ ์คํธ๋ฆผ์ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฐฐ์ด์ Collection์ List๋ก ๋ณํํ ์๋ ์๋ค.
Arrays.asList()
๋Arrays.stream()
์ ํ์ฉ.
์คํธ๋ฆผ์ ๊ตฌ์กฐ
list.stream().filter(x -> x>10).count();
์คํธ๋ฆผ ์์ฑ
:stream()
. ๋ฆฌํด ํ์ ์Stream
.
์ปฌ๋ ์ ์ ๋ชฉ๋ก์ ์คํธ๋ฆผ ๊ฐ์ฒด๋ก ๋ณํ.stream()
์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ.stream()
,parallelStream()
์ค๊ฐ ์ฐ์ฐ intermediate operation
:stream()
๋ถํฐ ์ข ๋จ ์ฐ์ฐ ์ ๊น์ง ๋ชจ๋ ์ฐ์ฐ. ๋ฆฌํด ํ์ ์Stream
.
์คํธ๋ฆผ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์ค๊ฐ ์ฐ์ฐ์ ์ฒ๋ฆฌํจ.
์ค๊ฐ์ฐ์ฐ์์๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํดํ์ง ๋ชปํจ.
๋ฐ๋์ ์ค๊ฐ ์ฐ์ฐ์ด ์์ด์ผ ํ๋ ๊ฒ์ ์๋ (0๊ฐ ์ด์์ ์ค๊ฐ์ฐ์ฐ).filter()
,map()
,flatMap()
,distinct()
,sorted()
,peek()
,limit()
,skip()
๋ฑ์ด ์๋ค.
์ข ๋จ ์ฐ์ฐ terminal operation
: ์คํธ๋ฆผ์ ๋งจ ๋ ์ฐ์ฐ. ๋ฆฌํด ํ์ ์ ์ซ์๊ฐ ๋๋ ๋ชฉ๋กํ ๋ฐ์ดํฐ.
์ค๊ฐ ์ฐ์ฐ์์ ์์ ๋ ๋ด์ฉ์ ๋ฆฌํดํจ.forEach()
,reduce()
,collect()
,toArray()
,count()
๋ฑ์ด ์๋ค.