Java

[Effective Java] ์•„์ดํ…œ 47. ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋Š” ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ์ปฌ๋ ‰์…˜์ด ๋‚ซ๋‹ค, ์•„์ดํ…œ 48. ์ŠคํŠธ๋ฆผ ๋ณ‘๋ ฌํ™”๋Š” ์ฃผ์˜ํ•ด์„œ ์ ์šฉํ•˜๋ผ.

quedevel 2023. 3. 23. 10:02
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 47. ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋Š” ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ์ปฌ๋ ‰์…˜์ด ๋‚ซ๋‹ค.

์›์†Œ ์‹œํ€€์Šค๋ฅผ ๋ฐ˜ํ˜ธ๋‚˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š”, ์ด๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž์™€ ๋ฐ˜๋ณต์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธธ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€

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

์ด์œ ๋กœ ๋ฉ์น˜ ํฐ ์‹œํ€€์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ๋Š” ์•ˆ๋œ๋‹ค.


๐ŸŽฏ ์•„์ดํ…œ 48. ์ŠคํŠธ๋ฆผ ๋ณ‘๋ ฌํ™”๋Š” ์ฃผ์˜ํ•ด์„œ ์ ์šฉํ•˜๋ผ.

๊ณ„์‚ฐ๋„ ์˜ฌ๋ฐ”๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์„ฑ๋Šฅ๋„ ๋นจ๋ผ์งˆ ๊ฑฐ๋ผ๋Š” ํ™•์‹  ์—†์ด๋Š” ์ŠคํŠธ๋ฆผ ํŒŒ์ดํ”„๋ผ์ธ ๋ณ‘๋ ฌํ™”๋Š” ์‹œ๋„์กฐ์ฐจ ํ•˜์ง€ ๋ง๋ผ.

  • ์ฃผ์˜์ 
  1. ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ Stream.iterate๊ฑฐ๋‚˜ ์ค‘๊ฐ„ ์—ฌ์‚ฐ์œผ๋กœ limit๋ฅผ ์“ฐ๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ๋ณ‘๋ ฌํ™”๋กœ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†๋‹ค.
  2. ์ŠคํŠธ๋ฆผ์˜ ์†Œ์Šค๊ฐ€ ArrayList, HashMap, HashSet, ConcurrentHashMap์˜ ์ธ์Šคํ„ด์Šค๊ฑฐ๋‚˜ ๋ฐฐ์—ด, int ๋ฒ”์œ„, long ๋ฒ”์œ„์ผ ๋•Œ ๋ณ‘๋ ฌํ™”์˜ ํšจ๊ณผ๊ฐ€ ๊ฐ€์žฅ ์ข‹๋‹ค.
  3. ์ŠคํŠธ๋ฆผ์„ ์ž˜๋ชป ๋ณ‘๋ ฌํ™”ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋‚˜๋น ์งˆ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฒฐ๊ณผ ์ž์ฒด๊ฐ€ ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ ์˜ˆ์ƒ ๋ชปํ•œ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์กฐ๊ฑด์ด ์ž˜ ๊ฐ–์ถฐ์ง€๋ฉด parallel ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ•˜๋‚˜๋กœ ๊ฑฐ์˜ ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด ์ˆ˜์— ๋น„๋ก€ํ•˜๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋งŒ๋ฝํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•