๐๏ธ ์๋ฐ ์คํธ๋ฆผ - ๋น์ ์ด ์์์ผ ํ ๋ชจ๋ ๊ฒ
์๋ฐ 8์์ ์๊ฐ๋ ์๋ฐ ์คํธ๋ฆผ์ ๊ฐ๋ ฅํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ๋ฐ์๋ค์ด ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ฐฉ์์ ํ์ ์ ๊ฐ์ ธ์์ต๋๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ํ ์ ์ธ์ ์ด๊ณ ๊ฐ๊ฒฐํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ๊น๋ํ๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ด ๊ธ์์๋, ์๋ฐ ์คํธ๋ฆผ์ ๋งคํน์ ์ธ ์ธ๊ณ๋ฅผ ํํํ๋ฉฐ ๊ทธ๊ฒ์ ์ฅ์ , ๊ธฐ๋ณธ ์ฐ์ฐ, ๊ธฐ๋ฅ๊ณผ ์ค์ ๋ก ์ธ ์ ์๋ ์์ ๋ฅผ ์ดํด๋ด ๋๋ค. ๐ ์๋ฐ ์คํธ๋ฆผ์ ์ฅ์ - ์ ์ธ์ ์ธ ํ์: ์๋ฐ ์คํธ๋ฆผ์ ๊ฐ๋ฐ์๋ค์ด ๊ตฌํ ์ธ๋ถ ์ฌํญ๋ณด๋ค ์ํ๋ ๊ฒฐ๊ณผ์ ์ง์คํ ์ ์๋ ํ์ด-๋ ๋ฒจ์ ํํ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. - ๋ณ๋ ฌ: ์๋ฐ ์คํธ๋ฆผ์ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ํจ์จ์ ์ธ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. - Laziness : ์๋ฐ ์คํธ๋ฆผ์ ์จ๋๋งจ๋ ๋ฐฉ์์ผ๋ก ํ๊ฐ๋๋ฏ๋ก ํน์ ์์ ์ ํ์ํ ์์๋ง ์ฒ๋ฆฌํ์ฌ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค. - ์ฝ๋ ๊ฐ๋ ์ฑ: ์คํธ๋ฆผ ์ฐ์ฐ์ ์ฝ๋๋ฅผ ๋์ฑ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ณ , ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๐ ์๋ฐ ์คํธ๋ฆผ ์์ฑ: ์ปฌ๋ ์ ๋ถํฐ ์์ฑ๊น์ง ์คํธ๋ฆผ์ ๋ค์ํ ์์ค๋ก ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ค์์ ์คํธ๋ฆผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. - ์ปฌ๋ ์ ์ผ๋ก: Collection.stream() - ๋ฐฐ์ด๋ก: Arrays.stream(array) - ์คํธ๋ฆผ ๋น๋ ์ฌ์ฉ: Stream.builder().add(element1).add(element2).build() - I/O๋ก: Files.lines(Path) - Infinite ์คํธ๋ฆผ: Stream.iterate(seed, function) ๐ ์คํธ๋ฆผ ์ฐ์ฐ ๋ง์คํฐ ํ๊ธฐ ์๋ฐ ์คํธ๋ฆผ์ ์ค๊ฐ ์ฐ์ฐ๊ณผ ์ต์ข ์ฐ์ฐ์ ํฌํจํ ๋ง์ ์ฐ์ฐ์ ์ ๊ณตํฉ๋๋ค. ์ค๊ฐ ์ฐ์ฐ์ ์๋ก์ด ์คํธ๋ฆผ์ ๋ฐํํ๊ณ , ์ต์ข ์ฐ์ฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. [์ค๊ฐ ์ฐ์ฐ] - filter(): ์ฃผ์ด์ง ํจ์์ ๋ํด ์์๋ฅผ ํํฐ๋งํฉ๋๋ค. - map(): ์์๋ฅผ ์ฃผ์ด์ง ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ณํํฉ๋๋ค. - flatMap(): ์์๋ฅผ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๊ณ ์์ฑ๋ ์คํธ๋ฆผ์ ํ๋ฉดํํฉ๋๋ค. - distinct(): ์ ์ผํ ์์๋ค๋ก ์คํธ๋ฆผ์ ๋ฐํํฉ๋๋ค. - sorted(): ์ฃผ์ด์ง ๋น๊ต์๋ก ์์๋ฅผ ์ ๋ ฌํฉ๋๋ค. - peek(): ์คํธ๋ฆผ์ ์์ ํ์ง ์๊ณ ๊ฐ ์์์ ์ก์ ์ ์ํํฉ๋๋ค. [์ต์ข ์ฐ์ฐ] - forEach(): ๊ฐ ์์์ ๋ํด ์ก์ ์ ์ํํฉ๋๋ค. - toArray(): ์์๋ฅผ ๋ฐฐ์ด๋ก ์ ํํฉ๋๋ค. - reduce(): ์์๋ฅผ ๋จ์ผ ๊ฐ์ผ๋ก ์ค์ ๋๋ค. - collect(): ๊ฐ๋ณ ์ปจํ ์ด๋์ ์์๋ฅผ ์์งํฉ๋๋ค. - min(), max(): ์ต์, ์ต๋๊ฐ์ ์ฐพ์ต๋๋ค. - count(): ์์์ ์๋ฅผ ์ ๋๋ค. - anyMatch(), allMatch(), noneMatch(): ํด๋น ํจ์๋ฅผ ๋ง์กฑํ๋ ์์๊ฐ ์๋์ง ํ ์คํธํฉ๋๋ค. - findFirst(), findAny(): ํด๋น ์กฐ๊ฑด์ ์ถฉ์กฑ์ํค๋ ์ฒซ ๋ฒ์งธ๋ ์๋ฌด ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๐ ์๋ฐ ์คํธ๋ฆผ ํ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก - ๊ฐ๋ฅํ ๋ฉ์๋ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. - ๋ณ๋ ฌ ์คํธ๋ฆผ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๊ธฐ์น ์์ ๋์์ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ์ธ์. - ์คํธ๋ฆผ์ ์ฑ๋ฅ๊ณผ ๋ณ๋ ฌ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ํ ์ ์ฅ ์ค๊ฐ ์ฐ์ฐ์ ์ฌ์ฉ์ ์ ํํฉ๋๋ค. - ์ฌ๋ฐ๋ฅธ ๋ฆฌ์์ค ์ฒ๋ฆฌ๋ฅผ ์ํด I/O ์ฌ์ฉ ์์ ํญ์ ์คํธ๋ฆผ์ ๋ซ์ต๋๋ค.