ch24 : Collections - Map

๋ชฉ์ฐจ

Collections

Map

โšก ํ‚ค์™€ ๊ฐ’์ด 1:1๋กœ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๊ฐ’์€ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‚˜ ํ‚ค๋Š” ์ค‘๋ณต์ด ์•ˆ๋œ๋‹ค.
  • ์ฃผ๋กœ HashMap ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ‚ค๊ฐ’์ด ์ •๋ ฌ๋˜์–ด์•ผํ•˜๋ฉด TreeMap์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • HashTable

    • HashTable์€ Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ง€๋งŒ, HashMap, TreeMap์™€๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

    • HashMap์€ ์Šค๋ ˆ๋“œ-์„ธ์ดํ”„ํ•˜์ง€ ์•Š์€ ๋ฐ˜๋ฉด, HashTable์€ ์Šค๋ ˆ๋“œ ์„ธ์ดํ”„ํ•˜๋‹ค.

    • ๋˜ํ•œ, HashMap์€ ํ‚ค ํ˜น์€ ๊ฐ’์— null ์ €์žฅ๊ฐ€๋Šฅํ•˜๋‚˜, HashTable์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

HashTable์„ ์ œ์™ธํ•œ Map(์„ ๊ตฌํ˜„ํ•œ) ํด๋ž˜์Šค๋“ค์€ ์Šค๋ ˆ๋“œ-์„ธ์ดํ”„ํ•˜์ง€ ์•Š๋‹ค. Map(์„ ๊ตฌํ˜„ํ•œ) ํด๋ž˜์Šค๋“ค์—์„œ ์Šค๋ ˆ๋“œ-์„ธ์ดํ”„ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Map m = Collections.synchronized( new HashMap(..) );

HashTable ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐโ•๐Ÿ”Ž

HashMap

  • ํ‚ค๋Š” ๊ธฐ๋ณธ์ž๋ฃŒํ˜•/์ฐธ์กฐ์ž๋ฃŒํ˜• ๋ชจ๋‘ ๋  ์ˆ˜ ์žˆ์Œ

    • ๋‹จ, ํ‚ค๊ฐ€ ๋˜๋Š” ์ž๋ฃŒํ˜•์˜ equals(), hashcode()๋ฅผ ์ž˜ ๊ตฌํ˜„ํ•ด์•ผํ•จ

    • hashcode()๊ฐ’์ด ํ‚ค๊ฐ’์œผ๋กœ ์ €์žฅ๋˜๊ธฐ์—, ๋‹ค๋ฅธ ๊ฐ์ฒด(ํ‚ค)์ธ๋ฐ hashcode()๊ฐ’์ด ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ // ???

  • ์ดˆ๊ธฐํ™”

    • HashMap<String, String> map = new HashMap<String, String>();

    • ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ๊ฒฝ์šฐ, ํฌ๊ธฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ! (ํฌ๊ธฐ ์ดˆ๊ธฐํ™” ์•ˆํ•ด๋„ OK)

  • ์ถ”๊ฐ€ (Map์€ ๋„ฃ์–ด์ค€๋‹ค๋Š” ํ‘œํ˜„์„ ๋งŽ์ด ์‚ฌ์šฉํ•จ)

    • put(ํ‚ค, ๊ฐ’)

    • ์ด๋ฏธ ์žˆ๋Š” ํ‚ค-๊ฐ’ ์Œ์— ์ƒˆ๋กœ์šด ๊ฐ’ ๋“ฑ๋กํ•˜๋ฉด, ์ƒˆ ๊ฐ’์œผ๋กœ ๋Œ€์ฒด๋œ๋‹ค.

  • ์กฐํšŒ

    • get(ํ‚ค)

      • ์—†๋Š” ํ‚ค-๊ฐ’ ์Œ์— ์ ‘๊ทผ/์กฐํšŒํ•˜๋ฉด null ๊ฐ’์ด ๋‚˜์˜ด.

      • ์ฐธ๊ณ ) ๋ฆฌ์ŠคํŠธ/๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ์—†๋Š” ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋ฉด, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•ด๋‹น ์œ„์น˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฑธ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ArrayIndexOutOfBoundsException ์ด๋ผ๋Š” ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

    • keySet() : Map ๊ฐ์ฒด์˜ ํ‚ค๋“ค์„ Set ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•จ

    • values() : Map ๊ฐ์ฒด์˜ ๊ฐ’์„ Collection ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•จ

    • entrySet() : Map ๊ฐ์ฒด์˜ ํ‚ค-๊ฐ’์Œ์„ Entry ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•จ (์ค‘๋ณต X)

      • getKey() : Entry ํƒ€์ž…์˜ ํ‚ค ์กฐํšŒ

      • getValue() : Entry ํƒ€์ž…์˜ ๊ฐ’ ์กฐํšŒ

  • ์‚ญ์ œ

    • remove()

TreeMap

โšก ํ‚ค๊ฐ’์„ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” Map ์ž๋ฃŒ๊ตฌ์กฐ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆซ์ž > ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž > ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž > ํ•œ๊ธ€ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

  • SortedMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๊ธฐ์— ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋œ๋‹ค.

Prperties ํด๋ž˜์Šค

  • System ํด๋ž˜์Šค์— Properties ๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค.

  • Properties๋Š” Hashtable์„ ํ™•์žฅํ•˜์˜€๊ธฐ์—, Map ์ธํ„ฐํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Prperties ํด๋ž˜์Šค์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?

    • Hashtable, HashMap ๋ณด๋‹ค ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ

    • load(), store() ๋“ฑ

  • ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์ฝ๊ธฐ๋ฅผ ํ•œ์ค„๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated