๋ชฉ๋ก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) ์—ฐ์†๋œ ์š”์†Œ ์ปฌ๋ ‰์…˜์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์˜€๋‹ค๋ฉด, ์ŠคํŠธ๋ฆผ์€ ์ด๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ๊ณ„์‚ฐํ• ์ง€์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘, ์—ฐ์†๋œ ๊ฐ’ ์ง‘ํ•ฉ์˜ ์ธํ„ฐํŽ˜..