๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.14] ์ŠคํŠธ๋ฆผ์˜ ํŠน์ง•

by OR15A 2023. 11. 15.

์ŠคํŠธ๋ฆผ

  • ๋ฐ์ดํ„ฐ์†Œ์Šค ์ถ”์ƒํ™” + (์ž์ฃผ์‚ฌ์šฉํ•˜๋Š”)๋ฉ”์„œ๋“œ ์ •์˜
  • ๋ฐ์ดํ„ฐ์†Œ์Šค ์ถ”์ƒํ™”: ๋ฐ์ดํ„ฐ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ=์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ↑ (๋ฐฐ์—ด, ์ปฌ๋ ‰์…˜, ํŒŒ์ผ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•จ)
  • ์œ ํ•œ์ŠคํŠธ๋ฆผ/๋ฌดํ•œ์ŠคํŠธ๋ฆผ์ด ์žˆ์Œ.

 

์ŠคํŠธ๋ฆผ์˜ ํŠน์ง•

โ—‡ ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ฝ๊ธฐ๋งŒ ํ•จ. ๋ณ€๊ฒฝ์€ X.
  • ํ•„์š”์‹œ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•จ(๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ ์ปฌ๋ ‰์…˜/๋ฐฐ์—ด)

โ—‡ ์ŠคํŠธ๋ฆผ์€ ์ผํšŒ์šฉ์ด๋‹ค.

  • ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด(์ตœ์ข…์—ฐ์‚ฐ์ˆ˜ํ–‰) ์ŠคํŠธ๋ฆผ ๋‹ซํ˜€์„œ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ. ํ•„์š”์‹œ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ฉด ๋จ.

โ—‡ ์ŠคํŠธ๋ฆผ์€ ์ž‘์—…์„ ๋‚ด๋ถ€๋ฐ˜๋ณต์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ๋‚ด๋ถ€๋ฐ˜๋ณต=๋ฐ˜๋ณต๋ฌธ์„ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ.

โ—‡ ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ์€ ์ค‘๊ฐ„์—ฐ์‚ฐ๊ณผ ์ตœ์ข…์—ฐ์‚ฐ์ด ์žˆ๋‹ค.

  • ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•ด์„œ ๋ณต์žกํ•œ ์ž‘์—…๋“ค์„ ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•จ.
  • *์ค‘๊ฐ„์—ฐ์‚ฐ: ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ์ŠคํŠธ๋ฆผ์ž„. ์ŠคํŠธ๋ฆผ์— ์—ฐ์†ํ•ด์„œ  ์ค‘๊ฐ„์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•จ.
  • *์ตœ์ข…์—ฐ์‚ฐ: ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ์ŠคํŠธ๋ฆผX. ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ  ์†Œ๋ชจํ•˜๋ฏ€๋กœ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ๊ฐ€๋Šฅํ•จ

โ—‡ ์ง€์—ฐ๋œ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

  • ์ตœ์ข…์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ค‘๊ฐ„์—ฐ์‚ฐ ์ˆ˜ํ–‰X (๋ฌดํ•œ์ŠคํŠธ๋ฆผ์—๋„ distinct()์ค‘๋ณต์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ด์œ )
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐ์‚ฐ์ด ์•„๋‹ˆ๋ฉฐ ์–ด๋–ค ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•˜๋Š”์ง€ ์ง€์ •๋งŒ ํ•ด๋‘ . ์ตœ์ข… ์—ฐ์‚ฐ์ด ํ˜ธ์ถœ๋˜๋ฉด ์ง€์ •๋œ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์ด ์‹คํ–‰๋จ.

โ—‡ ๋ณ‘๋ ฌ์ŠคํŠธ๋ฆผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋‚ด๋ถ€์ ์œผ๋กœ fork&join ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•จ.(pararell( )์ด์šฉ)
  • ๋ณ‘๋ ฌ์ž‘์—…์ด ๋””ํดํŠธ์ด๊ณ  ๋ณ‘๋ ฌํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” sequential( )๋ฉ”์„œ๋“œ ์‚ฌ์šฉ.

โ—‡ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ๋‹ค๋ฃจ๋Š” ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์˜คํ† ๋ฐ•์‹ฑ&์–ธ๋ฐ•์‹ฑ์œผ๋กœ ์ธํ•œ ๋น„ํšจ์œจ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์†Œ์Šค์˜ ์š”์†Œ๋ฅผ ๊ธฐ๋ณธํ˜•์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•จ.
  • ๊ธฐ๋ณธํ˜•๋งŒ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ จ๋œ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•จ
  • ex) IntStream, LongStream, DoubleStream