๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

STUDY/JAVA

JAVA - Stream(์ŠคํŠธ๋ฆผ)

๋ฐ˜์‘ํ˜•
์ŠคํŠธ๋ฆผ ?
   ์—ฌ๋Ÿฌ ์ž๋ฃŒ์˜ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋†“์€ ํด๋ž˜์Šค

1. ์ŠคํŠธ๋ฆผ ํŠน์ง•

  - ์ž๋ฃŒ์˜ ๋Œ€์ƒ๊ณผ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ๋™์ผํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰

  - ํ•œ ๋ฒˆ ์ƒ์„ฑ & ์‚ฌ์šฉํ•œ ์ŠคํŠธ๋ฆผ์€ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†์Œ

  - ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ์€ ๊ธฐ์กด ์ž๋ฃŒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ

 

2. ์ŠคํŠธ๋ฆผ์—ฐ์‚ฐ์—๋Š” ์ค‘๊ฐ„์—ฐ์‚ฐ๊ณผ ์ตœ์ข…์—ฐ์‚ฐ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Œ

  - ์ค‘๊ฐ„์—ฐ์‚ฐ : ์ž๋ฃŒ๋ฅผ ๊ฑฐ๋ฅด๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ์ž๋ฃŒ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑ

  - ์ตœ์ข…์—ฐ์‚ฐ : ์ƒ์„ฑ๋œ ๋‚ด๋ถ€์ž๋ฃŒ๋ฅผ ์†Œ๋ชจํ•ด ๊ฐ€๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰

 

์ค‘๊ฐ„์—ฐ์‚ฐ : filter(), map()

   filter() : ์กฐ๊ฑด์„ ๋„ฃ๊ณ  ๊ทธ ์กฐ๊ฑด์— ์ฐธ์ธ ๊ฒฝ์šฐ๋งŒ ์ถ”์ถœ

   map() : ์ด๋ฆ„๋งŒ ์ถœ๋ ฅ

์ตœ์ข…์—ฐ์‚ฐ : forEach(), count(), sum(), reduce()

   forEach() : ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅ   count() : ๊ฐœ์ˆ˜ ์ถœ๋ ฅ   sum() : ํ•ฉ๊ณ„   reduce()

 

*๋ฐฐ์—ด ์š”์†Œ์˜ ํ•ฉ๊ณผ ๊ฐœ์ˆ˜์ถœ๋ ฅ

 

Arrays์— stream์„ ํ˜ธ์ถœ ํ•œ ๋’ค sum()์—ฐ์‚ฐ์œผ๋กœ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•จ

Arrays์— stream์„ ํ˜ธ์ถœ ํ•œ ๋’ค count()์—ฐ์‚ฐ์œผ๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

   -> Type mismatch : cannot convert from long to int 

   -> (int)ํ˜•์œผ๋กœ ๋ณ€ํ™˜

 


Collection์—์„œ ์ŠคํŠธ๋ฆผ ํ™œ์šฉ(ArrayList)

  โ“. ArrayList ์ƒ์„ฑ

  โ“‘. stream๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•ด์„œ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ

  โ“’. ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅ(forEach())

       : forEach๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ -> ์š”์†Œ๊ฐ€ ํ•˜๋‚˜์”ฉ ๋ณ€์ˆ˜ s์— ๋Œ€์ž… -> ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ๋ฌธ ํ˜ธ์ถœ

  โ““. ๊ธ€์žํฌ๊ธฐ๊ฐ€ 5 ์ด์ƒ์ธ ์š”์†Œ ์ถœ๋ ฅ(filter, forEach)

      : ์œ„์—์„œ stream๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ–ˆ์ง€๋งŒ forEach๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด์„œ ์ž๋ฃŒ๊ฐ€ ์†Œ๋ชจ๋จ -> ์ƒˆ๋กœ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•ด์•ผํ•จ

 

 

๋ฐ˜์‘ํ˜•