# ์ปฌ๋ ‰์…˜(Java Collections Framework)

img

# Map

  • ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค

  • ์ˆœ์„œ๊ฐ€ ์—†๋‹ค.

  • ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์—์„œ ์›ํ•˜๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ(๊ฒ€์ƒ‰)ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ Key์™€ Value์˜ ํ˜•ํƒœ๋กœ ์‚ฝ์ž…๋˜๋ฉฐ, Key๋ฅผ ์ด์šฉํ•ด์„œ Value๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

  • ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Key๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (๋‹จ, key๊ฐ’์ด ๋‹ค๋ฅด๊ณ  value๊ฐ’์ด ๋™์ผํ•œ ๊ฒƒ์€ ๊ฐ€๋Šฅ)

  • HashMap๊ณผ HashTable์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ 

    • ๊ณตํ†ต์  : ํ‚ค(Key)์™€ ๊ฐ’(Value)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฐจ์ด์  : ์ผ๋ฐ˜์ ์œผ๋กœ ๋™๊ธฐํ™”(Synchronization)๊ฐ€ ํ•„์š” ์—†๋‹ค๋ฉด HashMap์„, ๋™๊ธฐํ™” ๋ณด์žฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Hashtable์„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค. HashMap๊ณผ Hashtable์€ ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•˜๋Š๋ƒ ํ•˜์ง€ ์•Š๋Š๋ƒ๋Š” ์ธก๋ฉด ์ด์™ธ์—๋Š” ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.
      • ์†๋„์ ์ธ ์ธก๋ฉด์—์„œ๋„ ๊ตฌํ˜•์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” Hashtable์€ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋ผ๋Š” ๋น„์šฉ๋•Œ๋ฌธ์— HashMap์— ๋น„ํ•ด ๋” ๋Š๋ฆฌ๋‹ค๊ณ  ํ•œ๋‹ค.
      • ํ•œ ์ž๋ฐ” ๊ด€๋ จ ์„œ์ ์— ์˜ํ•˜๋ฉด Vector์˜ ์ƒ์œ„ํ˜ธํ™˜(?)๊ฐœ๋…์ธ ArrayList์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋“ฏ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ธ HashMap์„ ํ™œ์šฉํ•˜๊ณ  ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์—์„œ๋Š” Java 5๋ถ€ํ„ฐ ์ œ๊ณตํ•˜๋Š” ConcurrentHashMap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ ํ‘œํ˜„ํ•œ๋‹ค.

# Collection

  • List
    • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” Collection
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณตํ•ด์„œ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ˆœ์ฐจ์ ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ต์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ์ž…๋ ฅํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • Vector์™€ ArrayList์˜ ์ฐจ์ด์ 
      • Vector๋Š” ๋™๊ธฐํ™”๊ฐ€ ์ด๋ฏธ ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค๊ณ  ArrayList๋Š” ๋™๊ธฐํ™”์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋œ ํด๋ž˜์Šค์ด๋‹ค.
      • Vector๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ArrayList๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. (ArrayList์—์„œ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์—‘์„ธ์Šค ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋™๊ธฐํ™”์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.)
      • ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ์ƒํ™ฉ์ด ์•„๋‹Œ ํ™˜๊ฒฝ์—์„  ArrayList๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.
  • Set
    • ์ง‘ํ•ฉ์ ์ธ ๊ฐœ๋…์˜ Collection
    • ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณตํ•ด์„œ ํฌํ•จํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์„ ์œ„ํ•ด Iterator๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

# Collections Framework ์„ ํƒ ๊ณผ์ •

  1. Map๊ณผ Collection ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ ์„ ํƒ 1-1. Collection ์„ ํƒ ์‹œ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ List์™€ Set์ค‘ ์„ ํƒ

  2. ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ Map, List, Set ๊ฐ๊ฐ์˜ ํ•˜์œ„ ๊ตฌํ˜„์ฒด๋ฅผ ์„ ํƒ

    2-1. Map: HashMap, LinkedHashMap, HashTable, TreeMap

    2-2. List: LinkedList, ArrayList

    2-3. Set: TreeSet, HashSet

# Reference & Additional Resources

  • https://github.com/WeareSoft
  • https://madplay.github.io/post/java-collection-synchronize
  • https://odol87.tistory.com/3
Last Updated: 12/5/2020, 11:36:44 AM