๋ชฉ๋กStream (2)
DevLog ๐ถ

๐ฌ ๋ชจ๋ ์๋ฐ ์ธ ์ก์ ์ฑํฐ 5์ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. โ๏ธ ํํฐ๋ง ๐ฑ ํ๋ฆฌ๋์ผ์ดํธ๋ก ํํฐ๋งํ๊ธฐ List crews = new ArrayList(); List backendCrews = crews.stream() // ๋๋ค์ ์ธ์(๋ฐฑ์๋ ํฌ๋ฃจ)๋ฅผ ๋ฐ์ ํน์ ์์๋ฅผ ์ ํํ๋ค. .filter(crew -> crew.getCourse() == Course.BACKEND) .collect(Collectors.toUnmodifiableList()); ์ง๋ ์ฑํฐ์์ ์ฌ์ฉํ๋ ์์ ์ด๋ค. ์ฌ๊ธฐ์ filter ๋ฉ์๋๋ Predicate๋ฅผ ์ธ์๋ก ๋ฐ์์, ํด๋น ํ๋ฆฌ๋์ผ์ดํธ์ ์ผ์นํ๋ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋ ์คํธ๋ฆผ์ ๋ฐํํ๋ค. ๐ฑ ๊ณ ์ ์์ ํํฐ๋ง distinct ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ณต์ ์ ๊ฑฐํ ์์๋ก ์ด๋ฃจ์ด์ง ์คํธ๋ฆผ์ ๋ฐ..

๐ฌ ๋ชจ๋ ์๋ฐ ์ธ ์ก์ ์ฑํฐ 4์ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. โ๏ธ ์คํธ๋ฆผ์ด๋? ์๋ฐ 8์ ์๋กญ๊ฒ ๋ค์ด์จ ๊ธฐ๋ฅ ์ค, ๊ฐ์ฅ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ด๋ผ๊ณ ๋งํด๋ ๋ฌด๋ฐฉํ๋ค. ์ปฌ๋ ์ ๋ฐ์ดํฐ์ ๋ฐ๋ณต์ ๋์์ฃผ๊ณ , ๋ฉํฐ ์ค๋ ๋ ์ฝ๋ ์์ด ๋ณ๋ ฌ์ฑ์ ๊ตฌํํ ์ ์๋ ์์ฃผ ์ ์ฉํ ์น๊ตฌ์ด๋ค. ๋ํ, filter๋ sorted, map, collect ๊ฐ์ ์ฐ์ฐ์ ‘high-level building block’์ด๋ผ๊ณ ํ๋๋ฐ, ์คํธ๋ฆผ์ ๋ง์น ๋ธ๋ก์ฒ๋ผ ์๊ณ , ์กฐ๋ฆฝํ ์ ์๋ค๋ ์ ์ด ํฐ ํน์ง์ด๋ค. โ๏ธ stream ๋ฉ์๋ ๐ฑ ์คํธ๋ฆผ์ด๋, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฐ์ฐ์ ์ํด ์์ค์์ ์ถ์ถ๋ ์ฐ์๋ ์์์ด๋ค. 1) ์ฐ์๋ ์์ ์ปฌ๋ ์ ์ ๋ฐ์ดํฐ์ ๋ํ ์๋ฃ๊ตฌ์กฐ์๋ค๋ฉด, ์คํธ๋ฆผ์ ์ด๋ฅผ ์ด๋ค ์์ผ๋ก ๊ณ์ฐํ ์ง์ ๋ํด ๋ค๋ฃฌ๋ค. ๋ ๊ฐ์ง ๋ชจ๋, ์ฐ์๋ ๊ฐ ์งํฉ์ ์ธํฐํ..