TreeSet, TreeMap vs HashSet, HashMap

์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์จ์•ผํ• ๊นŒ!

TL;DR

  • ํŠน๋ณ„ํ•œ ์‚ฌ์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์ข‹์€ HashMap์„ ์‚ฌ์šฉ

  • ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด LinkedHashMap์„ ์‚ฌ์šฉ

  • ํ‚ค๊ฐ’์„ ์ผ์ •ํ•˜๊ฒŒ iterate ํ•˜๊ณ ์žํ•œ๋‹ค๋ฉด TreeMap์„ ์‚ฌ์šฉ

TreeMap๊ณผ HashMap์˜ ์ฐจ์ด์ 

  • TreeMap์€ HashMap๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์ด์ง€๋งŒ, TreeMap์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค

  • HashMap์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, TreeMap๋ณด๋‹ค ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค

  • but, HashMap์€ TreeMap๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๋‹ค

์ˆœ์„œ ๋ณด์žฅ ์ธก๋ฉด

  • HashMap์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค

    • LinkedHashMap ์€ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค!

  • TreeMap์€ Key ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋œ ํด๋ž˜์Šค์˜ ๋น„๊ต ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค

    • key ๊ฐ’์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ sort ๋˜๋Š” ๋ฐฉ์‹

์†๋„ ์ธก๋ฉด

  • HashMap ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1) ์ด๋‹ค

    • ํ•ด์‹œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ

  • TreeMap ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log n) ์ด๋‹ค

    • ๋Œ€์‹ , ์ •๋ ฌ๋œ ์ˆœ์„œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค

Key์— null ํ—ˆ์šฉ ์—ฌ๋ถ€

  • HashMap ์€ key์— null ํ—ˆ์šฉ

  • TreeMap ์€ key์— null ํ—ˆ์šฉ X

TreeMap์€ ์–ธ์ œ ์“ฐ์ง€?

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

    • ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์–ด Thread-safe ํ•˜๋‹ค

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์ด ์ž์ฃผ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒฝ์šฐ

TreeMap์ด ํšจ์œจ์ ์ด์ง€ ์•Š์€ ๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ํฐ ๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์ด ์ž์ฃผ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

Last updated