๐Ÿต java

JAVA | STREAM์ด๋ž€ ? (์‚ฌ์šฉ๋ฒ•, ๋ฐฑ์ค€ ๋ฌธ์ œ๊นŒ์ง€ ๊ฐ™์ด ํ’€์–ด๋ณด๊ธฐ)

c0zi 2023. 8. 10. 23:27

STREAM์ด๋ž€?

์ž๋ฐ”์—์„œ๋Š” ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜(List, Map, Set ๋“ฑ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ๊ธธ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๊ณ  ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง€๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฟผ๋ฆฌ์™€ ๊ฐ™์ด ์ •ํ˜•ํ™”๋œ ์ฒ˜๋ฆฌ ํŒจํ„ด์„ ๊ฐ€์ง€์ง€ ๋ชปํ–ˆ๊ธฐ์— ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ Java SE 8๋ถ€ํ„ฐ ์ŠคํŠธ๋ฆผ(stream) API๋ฅผ ๋„์ž…ํ•˜์˜€๋‹ค.

์ŠคํŠธ๋ฆผ API๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋‹ค๋ฃจ๋ฏ€๋กœ, ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•œ ๊ณตํ†ต๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์กฐ๊ธˆ ๋” ์ดํ•ด๊ฐ€ ์‰ฝ๊ฒŒ Stream์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.


์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ๋ฒ•

 

์ŠคํŠธ๋ฆผ์˜ ๊ณผ์ •

 

์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

 

  1. ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ : ์ŠคํŠธ๋ฆผ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  2. ์ŠคํŠธ๋ฆผ ๊ฐ€๊ณต (์ค‘๊ฐœ์—ฐ์‚ฐ) : ํ•„ํ„ฐ๋ง(filtering) ๋ฐ ๋งตํ•‘(mapping) ๋“ฑ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์ค‘๊ฐ„ ์ž‘์—…(intermediate operations).
  3. ์ŠคํŠธ๋ฆผ ๊ฒฐ๊ณผ (์ตœ์ข…์—ฐ์‚ฐ) : ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ž‘์—… (terminal operations).

 


๐Ÿ“‹ ์ฐธ๊ณ  ์ž๋ฃŒ

http://www.tcpschool.com/java/java_io_stream

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com