Java programming

[Java programming] Java ์ปฌ๋ ‰์…˜ ์ •๋ฆฌ (Collection) ์ •๋ฆฌ - ์ž๋ฐ”์˜ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๊ตฌ์กฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2023. 7. 19.

โ–ฆ Java Collection FrameWork(JCF)

 

์ž๋ฐ”์—์„œ ์ปฌ๋ ‰์…˜์ด๋ž€ ๊ฐ์ฒด(๋ฐ์ดํ„ฐ)์˜ ํ•ฉ, ๊ทธ๋ฃน, ๋ชจ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

์ž๋ฐ”์—์„œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” "Collection FrameWork" ๋ผ๋Š” ๊ฐœ๋…์ด JDK1.2์—์„œ ์ •์˜ ๋˜์—ˆ๋‹ค.

 

- ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.
- ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•ด ๋†“์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ž๋ฐ”์˜ ์ธํ„ฐํŽ˜์ด์Šค(Interface)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ๋‹ค.

 

 

 

๐Ÿ’ก ์—ฌ๊ธฐ์„œ ์ž ๊น! ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ฐฐ์—ด(Array)์ด ์žˆ๋Š”๋ฐ ์™œ Collection์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

๋ฐฐ์—ด๊ณผ์˜ ์ฐจ์ด์ ์€ ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์•„๋‹Œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
๋ฐฐ์—ด์€ new int[4]๋ฅผ ํ•˜๋ฉด 4๊ฐœ ๊ณต๊ฐ„๋ฐ–์— ๋ชป์“ฐ๊ณ  ๋ฏธ๋ฆฌ ์„ ์–ธ์„ ํ†ตํ•ด 4๊ฐœ์˜ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€๋งŒ(์ •์  ๋ฉ”๋ชจ๋ฆฌ),
collection์€ ๊ณต๊ฐ„์ด ๊ณ„์† ํ•„์š”ํ•œ ๋งŒํผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค(๋™์  ๋ฉ”๋ชจ๋ฆฌ).

 

 

 

 

 

Collection ์ธํ„ฐํŽ˜์ด์Šค(java.util.Collection) ์™€ Map ์ธํ„ฐํŽ˜์ด์Šค(java.util.Map) ์ด ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์˜ ์ฃผ์š” ๋ฃจํŠธ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

 

Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” List, Set, Queue๋กœ ํฌ๊ฒŒ 3๊ฐ€์ง€ ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— Map์˜ ๊ฒฝ์šฐ Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ Collection์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

 

 

โ–ฆ Collection ์ธํ„ฐํŽ˜์ด์Šค์˜ ํŠน์ง•

 

์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„ํด๋ž˜์Šค  ํŠน์ง• 
 Set  HashSet
TreeSet
 ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
 List  LinkedList
Vector
ArrayList
 ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค.
 Queue  LinkedList
PriorityQueue
 List์™€ ์œ ์‚ฌ
 Map  Hashtable
HashMap
TreeMap
 ํ‚ค(Key), ๊ฐ’(Value)์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์œผ ์ง‘ํ•ฉ์œผ๋กœ,
์ˆœ์„œ๋Š” ์œ ์ง€๋˜์ง€ ์•Š์œผ๋ฉฐ ํ‚ค(Key)์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜ ๊ฐ’(Value)์˜ ์ค‘๋ณต์€ ํ—ˆ์šฉํ•œ๋‹ค.

 

 

โ–ฆ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค

 

1. List ์ธํ„ฐํŽ˜์ด์Šค

์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด์•ผ ํ•  ๋•Œ, ๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (์ค‘๋ณต o, ์ˆœ์„œ o)

List ์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection์˜ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋“ค๊ณผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด List ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ArrayList, LinkedList, Vector, Stack ์ˆœ์„œ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.
์ด๋•Œ ArrayList์™€ Vector ํด๋ž˜์Šค๋Š” ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ArrayList๋Š” Thread safeํ•˜์ง€ ์•Š๊ณ  Vector๋Š” Thread safe ํ•˜๋‹ค.
(Thread safeํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ์ฒด์— ์—ฌ๋Ÿฌ ๋ช…์ด ๋‹ฌ๋ ค๋“ค์–ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ)

  • ArrayList

    - ๋‹จ๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ๋กœ ๊ฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์กฐํšŒ ๊ธฐ๋Šฅ์— ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค.
    - ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด ๋น ๋ฅด๋‹ค.
    - ํ•˜์ง€๋งŒ List๋“ค์˜ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ์— ๋นˆ๋ฒˆํ•œ ์ถ”๊ฐ€ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๋ฉด ๋А๋ฆฌ๋‹ค.
    - List ์ปฌ๋ ‰์…˜์„ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด Thread safe ํ•˜์ง€ ์•Š๋‹ค.

  • LinkedList

    - ์–‘๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜์ •๋ณด๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ์— ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•œ๋‹ค.
    - ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์ด ๋А๋ฆฌ๋‹ค.

    - ์Šคํƒ, ํ, ์–‘๋ฐฉํ–ฅ ํ ๋“ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์“ฐ์ž„
  • Vector

    - ๊ณผ๊ฑฐ์— ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ๊ณ , ๋‚ด๋ถ€์—์„œ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๊ฐ€ ์ผ์–ด๋‚˜ ๋น„๊ต์  ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๊ณ  ๋ฌด๊ฑฐ์›Œ ์ตœ๊ทผ์—๋Š” ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค
    - ArrayList์™€ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ๋™์ผํ•˜์ง€๋งŒ Thread safe ํ•˜๋‹ค.

2. Set ์ธํ„ฐํŽ˜์ด์Šค

์ˆœ์„œ๊ฐ€ ํ•„์š” ์—†๊ณ , set์— ์ €์žฅ๋  ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต์ด ๋˜๋ฉด ์•ˆ ๋  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (์ค‘๋ณต x, ์ˆœ์„œ x)

์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹จ, LinkedHashSet์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.)

  • HashSet

    - ๊ฐ€์žฅ ๋น ๋ฅธ ์ž„์˜ ์ ‘๊ทผ ์†๋„
    - ์ˆœ์„œ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค.
    - Thread safe ํ•˜์ง€ ์•Š๋‹ค.


  • TreeSet

    - ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ธฐ๋ณธ์€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ)
    - Thread safe ํ•˜์ง€ ์•Š๋‹ค.

  • LinkedHashSet

    - ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.
    - Thread safe ํ•˜์ง€ ์•Š๋‹ค.


3. Map ์ธํ„ฐํŽ˜์ด์Šค

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, key์™€ value ์Œ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ๊ทธ๋ฆฌ๊ณ , key๋ฅผ ์ค‘๋ณต ์ €์žฅํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (key ์ค‘๋ณต x, value ์ค‘๋ณต o, ์ˆœ์„œ x)

Map์€ ํ‚ค(Key)์™€ ๊ฐ’(value)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๋‹ค.

๐Ÿ’ก Map์˜ ์ฃผ์š” ํŠน์ง•

- ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ํ‚ค์™€ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค.
- ํ‚ค๊ฐ€ ์—†์ด ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜๋Š” ์—†๋‹ค.
- ๊ฐ’์ด ์—†์ด ํ‚ค๋งŒ ์ €์žฅํ•  ์ˆ˜๋„ ์—†๋‹ค.
- ํ‚ค๋Š” ํ•ด๋‹น Map์—์„œ ๊ณ ์œ ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.
- ๊ฐ’์€ Map์—์„œ ์ค‘๋ณต๋˜์–ด๋„ ์ „ํ˜€ ์ƒ๊ด€์—†๋‹ค.
- ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค (๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค).

 

  • Hashtable

    - HashMap๋ณด๋‹ค๋Š” ๋А๋ฆฌ์ง€๋งŒ ๋™๊ธฐํ™” ์ง€์›
    - null๋ถˆ๊ฐ€
    - Thread safe ํ•˜๋‹ค.

  • HashMap

    - ์ค‘๋ณต๊ณผ ์ˆœ์„œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ null๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    - ๋Œ€๋ถ€๋ถ„ HashMap ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ HashMap์— ๋‹ด์„ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์ดˆ๊ธฐ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.



  • TreeMap

    - ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋™์‹œ์— ํ‚ค๋ฅผ ์ •๋ ฌํ•œ๋‹ค.

    - ํ‚ค(key)๊ฐ€ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์‹œ ๋น ๋ฅด๋‹ค.
    - ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ, ์ •๋ ฌ๋˜๋Š” ์ˆœ์„œ๋Š” ์ˆซ์ž > ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž > ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž > ํ•œ๊ธ€ ์ˆœ์ด๋‹ค.
    - ์ •๋ ฌ์„ ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด HashMap ๋ณด๋‹ค๋Š” TreeMap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ๋ฆฌํ•˜๋‹ค.

 

 

๋Œ“๊ธ€