ch24 : Collections - Map

λͺ©μ°¨

Collections

image

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