Stream API

Steam API๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋‹ค๋ค„์„œ, ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๊ธฐ์œ„ํ•œ ๊ณตํ†ต๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค

    • Steam API๋ฅผ ์ด์šฉํ•˜๋ฉด, ๋ฐฐ์—ด์ด๋‚˜ Collection ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค

  • ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ ๋“ฑ ์ปฌ๋ ‰์…˜์˜ ์ €์žฅ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•ด์„œ ๋žŒ๋‹ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค

  • Collection ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ ์ •๋ ฌ, ํ•„ํ„ฐ๋ง, ์ค‘๋ณต ์ œ๊ฑฐ ๋“ฑ์„ ๊ตฌํ˜„ ์‹œ ํ•„์š”ํ•˜๋‹ค

Stream์˜ ํŠน์ง•

  • Stream์€ ์™ธ๋ถ€ ๋ฐ˜๋ณต์„ ํ†ตํ•ด ์ž‘์—…ํ•˜๋Š” ์ปฌ๋ ‰์…˜๊ณผ ๋‹ฌ๋ฆฌ, ๋‚ด๋ถ€ ๋ฐ˜๋ณต (internal iteration) ์„ ํ†ตํ•ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

  • Stream์€ ์ผํšŒ์šฉ์ด๋‹ค

    • Stream์€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ Collection๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ซํ˜€์„œ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

    • ํ•„์š”ํ•˜๋‹ค๋ฉด ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ Collection์ด๋‚˜ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ return ํ•  ์ˆ˜ ์žˆ๋‹ค

  • Stream์€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค

    • Stream์€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ๋งŒ ํ•  ๋ฟ, ์›๋ณธ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค

  • Stream ์—ฐ์‚ฐ์€ ํ•„ํ„ฐ-๋งต (filter-map) ๊ธฐ๋ฐ˜์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ฐ (lazy) ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค

  • Stream์€ parallelStream() method๋ฅผ ํ†ตํ•œ ์†์‰ฌ์šด ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๋ฅผ ์ง€์›ํ•œ๋‹ค

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

    • Stream์„ ์ด์šฉํ•œ ์ž‘์—…์ด ๊ฐ„๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๊ฒฐ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ด๋‹ค

    • ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฐ˜๋ณต๋ฌธ์„ method์˜ ๋‚ด๋ถ€์— ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค

      • ๋ฐ˜๋ณต๋ฌธ์ด ์ฝ”๋“œ์ƒ์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค

Stream API์˜ ๋™์ž‘ ํ๋ฆ„

  1. Stream์˜ ์ƒ์„ฑ

  2. Stream์˜ ์ค‘๊ฐœ ์—ฐ์‚ฐ (Stream์˜ ๋ณ€ํ™˜)

  3. Stream์˜ ์ตœ์ข… ์—ฐ์‚ฐ (Stream์˜ ์‚ฌ์šฉ)

Last updated