MapleStory Cookie With Halo

โ˜• JAVA/โ˜• Class & Method

[JAVA][Stream]collect()์™€ Collectors

๋‰ด์ด NUEY 2024. 12. 18. 23:20
๋ฐ˜์‘ํ˜•

 

๐Ÿ’ก reduce()์™€ collect()์˜ ์ฐจ์ด

2024.12.17 - [โ˜• ์ž๋ฐ” JAVA/โ˜• ํด๋ž˜์Šค์™€ ํ•จ์ˆ˜ Class & Method] - [JAVA][Stream]์ตœ์ข… ์—ฐ์‚ฐ

์ „์ฒด์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ์—๋Š” reduce()์‚ฌ์šฉํ•˜๊ณ , collect()๋Š” ๊ทธ๋ฃน๋ณ„๋กœ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

collect( Collectors.๋ฉ”์„œ๋“œ )
: Collector๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœํ•˜๋Š”
์ŠคํŠธ๋ฆผ์˜ ์ตœ์ข…์—ฐ์‚ฐ ๋ฉ”์„œ๋“œ.

 

โ€ป์ฒซ๋ฒˆ์งธ๊ฑฐ๋Š” ์ž˜ ์•ˆ ์“ฐ์ธ๋‹ค.

 

๐Ÿ’ก Collector๋Š” ์ˆ˜์ง‘(collect)์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด ๋†“์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
Stream์˜ ์š”์†Œ T๋ฅผ A์— ๋ˆ„์ ํ•œ ๋‹ค์Œ R๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๐Ÿ’ก Collectorsํด๋ž˜์Šค๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์˜ Collector๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฉ”์„œ๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  1. collect()๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ (Collector)๋ฅผ ๊ตฌํ˜„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.
  2. ์ด Collector์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•œ Collectorsํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด
  3. collect(Collectors.๋ฉ”์„œ๋“œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๐ŸŒŸ collect()์˜ ์ฃผ์š”๊ธฐ๋Šฅ
1. ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
2. ๋ถ„ํ• ๋œ ์ŠคํŠธ๋ฆผ, ์ฆ‰ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

Stream → Collection
toList() toSet() toMap() toCollection()

 

  • .collect( Collectors.toList() )
  • .collect( Collectors.toSet() )
  • .collect( Collectors.toMap(key, value) ) 
  • .collect( Collectors.toCollection(์ปฌ๋ ‰์…˜ ๊ตฌํ˜„ํด๋ž˜์Šค::new) )

 


 

Stream → Array
.toArray()

 

๋งค๊ฐœ๋ณ€์ˆ˜ ์—†๋Š” toAraay()๋Š” Object๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ์— ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ’ก ๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์ธ IntStream์€ toArray()๋งŒ ์จ๋„ ๋ฐ”๋กœ ๋ณ€ํ™˜์ด ๋œ๋‹ค.
ํ•˜์ง€๋งŒ ์ฐธ์กฐํ˜•๋“ค์€ toArray(๋งค๊ฐœ๋ณ€์ˆ˜)๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 


 

์ŠคํŠธ๋ฆผ์˜ ํ†ต๊ณ„
counting() summingInt() ...

 

์˜ˆ์‹œ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋กœ ์‹ค์ œ๋กœ ์ŠคํŠธ๋ฆผ์€ ์ด๋ ‡๊ฒŒ ์žฌํ™œ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

  • ์œ„ ์ฝ”๋“œ์—์„œ collect()๊ฐ€ ์—†๋Š” ๊ฑด ์ŠคํŠธ๋ฆผ์˜ ํ†ต๊ณ„ ๋ฉ”์„œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๋‹ค.

  • collect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋ถ€๋ถ„์—๋งŒ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

.collect(Collectors.reducing())
: ๊ทธ๋ฃน๋ณ„ ๋ฆฌ๋“€์‹ฑ

 

 

  • identity - ์ดˆ๊ธฐ๊ฐ’.

  • BinaryOperator(acculmulator) op- ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ.
    • BinarayOperator๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 
    • ๋งค๊ฐœ๋ณ€์ˆ˜2๊ฐœโญ• ๋ฐ˜ํ™˜โญ•
    • ์ด ๋•Œ ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ํƒ€์ž… ๋ชจ๋‘ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

  • Function<T, U> mapper  - T๋ฅผ U๋กœ ๋ณ€ํ™˜ ์ž‘์—…์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ.

 

์‚ฌ์šฉ๋ฒ• ์˜ˆ์‹œ๋“ค

 


 

.collect(joining(๊ตฌ๋ถ„์ž))
: ๋ฌธ์ž์—ด ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•œ๋‹ค.

์ถœ๋ ฅ๊ฒฐ๊ณผ

 


2024.12.19 - [โ˜• ์ž๋ฐ” JAVA/โ˜• ํด๋ž˜์Šค์™€ ํ•จ์ˆ˜ Class & Method] - [JAVA][Stream]๊ทธ๋ฃนํ™”์™€ ๋ถ„ํ•  partitioningBy() & groupingBy()


์ฐธ์กฐ์˜์ƒ

๋ฐ˜์‘ํ˜•