Item 45. Stream
์คํธ๋ฆผ์ ์ฃผ์ํด์ ์ฌ์ฉํ๋ผ
์คํธ๋ฆผ API๋ ๋ค๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋์ ์ฃผ๋๋ฐ, ํต์ฌ ์ถ์ ๊ฐ๋ ์ ์๋ ๋ ๊ฐ์ง๋ผ๊ณ ํ ์ ์๋ค.
์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์์ ์ ํ ํน์ ๋ฌดํ ์ํ์ค๋ฅผ ๋ปํ๋ค.
์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ์ด ์์๋ค๋ก ์ํํ๋ ์ฐ์ฐ ๋จ๊ณ๋ฅผ ํํํ๋ค.
์คํธ๋ฆผ ์์ ๋ฐ์ดํฐ ์์๋ค์ ๊ฐ์ฒด ์ฐธ์กฐ๋ ๊ธฐ๋ณธ ํ์ ๊ฐ(int, long double)์ ํฌํจํ ์ ์๋ค.
์คํธ๋ฆผ ์ฐ์ฐ
์คํธ๋ฆผ์ ์์ค ์คํธ๋ฆผ์์ ์์ํด ์ข ๋จ ์ฐ์ฐ์ผ๋ก ๋๋๋ฉฐ, ๊ทธ ์ฌ์ด์ ํ๋ ์ด์์ ์ค๊ฐ ์ฐ์ฐ์ด ์์ ์ ์๋ค.
์ค๊ฐ ์ฐ์ฐ(intermediate operation) : ์คํธ๋ฆผ์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๋ณํํ๋ ์ฐ์ฐ(๋ฐ์ดํฐ ์์์ ํ์ ์ด ๋ฐ๋ ์ ์์)
์ข ๋จ ์ฐ์ฐ(terminal operation) : ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ์ฐ์ฐ
์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ์ง์ฐ ์คํ๋๊ธฐ ๋๋ฌธ์, ์ข ๋จ ์ฐ์ฐ์ด ํธ์ถ๋๋ ์์ ์ ๋ชจ๋ ์ค๊ฐ ์ฐ์ฐ์ด ์ ์ฉ๋๋ค. ๋ํ ์คํธ๋ฆผ API๋ ๋ฉ์๋ ์ฐ์๋ฅผ ์ง์ํ๋ ํ๋ฃจ์ธํธ API(fluent API)์ด๊ธฐ ๋๋ฌธ์, ํ์ดํ๋ผ์ธ ํ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ํธ์ถ์ ์ฐ๊ฒฐํ์ฌ ๋จ์ผ ํํ์์ผ๋ก ๋ง๋ค ์ ์๋ค.
๊ณผํ ์คํธ๋ฆผ
์คํธ๋ฆผ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๊ณผํ๊ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์คํ๋ ค ์ฝ๋๊ฐ ๋ ๋ณต์กํด์ง ์ ์๋ค.
์ฝ๋์ ๊ธธ์ด๋ง ์งง์์ก์ ๋ฟ, ์คํธ๋ฆผ์ ์ฌ์ฉํ ์ชฝ์ ์ฝ๋๊ฐ ๋ ๋ณต์กํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๊ณ ๋ณผ ์ ์๋ค. ๋ชจ๋ ์ฐ์ฐ์ ์คํธ๋ฆผ์์ ์ํํ๋ ๊ฒ์ด ์๋๋ผ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๊ธฐ๋ณธ ํ์
์ด ์๋ ์คํธ๋ฆผ ์ฌ์ฉ
์คํธ๋ฆผ์ ๊ธฐ๋ณธ์ ์ผ๋ก int, long, double ํ์ ๋ง ์ง์ํ๋๋ฐ, ์ด์ธ์ ํ์ ์ ์ฌ์ฉํ๋ฉด ์๋ํ์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์๋ค.
์์ ๊ฐ์ด char ํ์ ์ ์ฌ์ฉํ ๋๋ ๋ช ์์ ์ผ๋ก ํ๋ณํ์ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
์๋ง๋ ์คํธ๋ฆผ ์ฌ์ฉ
์คํธ๋ฆผ์ ๊ณผํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ข์ง๋ง, ์๋์ ๊ฐ์ ์ํฉ์์๋ ์คํธ๋ฆผ์ ์ฌ์ฉ์ ๊ณ ๋ คํด๋ณผ ์ ์๋ค.
์์๋ค์ ์ํ์ค๋ฅผ ์ผ๊ด๋๊ฒ ๋ณํ
์์๋ค์ ์ํ์ค๋ฅผ ํํฐ๋ง
์์๋ค์ ์ํ์ค๋ฅผ ํ๋์ ์ฐ์ฐ์ ์ฌ์ฉํด ๊ฒฐํฉ(+, concat, min, max ๋ฑ)
์์๋ค์ ์ํ์ค๋ฅผ ์ปฌ๋ ์ ์ ๋ชจ์ผ๊ธฐ(toList, toSet ๋ฑ)
์์๋ค์ ์ํ์ค์์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ฅผ ์ฐพ๊ธฐ(findAny, anyMatch ๋ฑ)
ํ์ง๋ง ์ ์ํฉ์ด๋ผ๊ณ ๋ฌด์กฐ๊ฑด ์คํธ๋ฆผ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๊ณ , ๊ฒฐ๊ตญ์ ๊ฐ์ ์ผ์ ์ํํ๋ ์ฝ๋๋ฅผ ๊ฐ์ธ ์ทจํฅ์ผ๋ก ์ ํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ ์ค ๋ ๋์ ๊ฒ์ ์ ํํ๋ฉด ๋๋ค.
Last updated