πŸ“•μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(List, Set, etc.)

dev_itzel_02✨·2024λ…„ 8μ›” 28일
post-thumbnail

🧐 자료ꡬ쑰

ν”„λ‘œκ·Έλž¨ μž‘μ„± μ‹œ μ—¬λŸ¬ 데이터가 ν•„μš”ν•œλ°, 이런 경우 ν•˜λ‚˜μ˜ 데이터 νƒ€μž…μœΌλ‘œ μ—¬λŸ¬ 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ κ°œλ…

λŒ€ν‘œμ μΈ 자료ꡬ쑰 ν˜•νƒœ πŸ‘‰πŸΌ Array, List, Map, etc.
| 볡수개의 데이터λ₯Ό μ–΄λ–»κ²Œ λ‹€λ£¨λŠλƒκ°€ 핡심❗


🏷️ μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬

μžλ°”μ—μ„œ 데이터λ₯Ό μœ μš©ν•˜κ²Œ λ‹΄κΈ° μœ„ν•΄ λ§Œλ“€μ–΄λ‘” μΈν„°νŽ˜μ΄μŠ€

>> img ref.

μΈν„°νŽ˜μ΄μŠ€κ΅¬ν˜„ν΄λž˜μŠ€μ„€λͺ…
Set
HashSet, LinkedHashSet, TreeSet
μˆœμ„œ X, 쀑볡 X
List
LinkedList, Stack, Vector, ArrayList
μˆœμ„œ O, 쀑볡 O
Queue
LinkedList, PriorityQueue
μˆœμ„œ O, 쀑볡 O, FIFO ꡬ쑰
Map<K,V>
HashTable, HashMap, LinkedHashMap, SortedMap
ν‚€λŠ” 쀑볡 X, 값은 쀑볡 O

🏷️ Array

데이터λ₯Ό 순차적으둜 μ €μž₯ν•΄ 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 인덱슀λ₯Ό 톡해 μ ‘κ·Ό

  • 순차적으둜 μ‚¬μš©ν•˜λŠ” λ‹¨μˆœν•œ λ¬Έμžλ‚˜ 숫자 λ“±μœΌλ‘œ 이루어진 μ§‘ν•©ν˜• 데이터 처리 μ‚¬μš© μ‹œ 유용

β“νŠΉμ§•

  1. μ„ μ–Έν•  λ•Œ 크기가 κ³ μ •
  2. 순차적으둜만 μ ‘κ·Όν•  수 μžˆμ–΄ μœ„μΉ˜λ₯Ό λͺ¨λ₯΄λŠ” 경우 효율이 떨어짐
  3. 배열에 λ“€μ–΄κ°€λŠ” λ°μ΄ν„°λŠ” λ™μΌν•œ μžλ£Œν˜•λ§Œ κ°€λŠ₯
  4. λ°°μ—΄ 쀑간에 값을 μΆ”κ°€ν•˜λ €λ©΄ κΈ°μ‘΄ 데이터λ₯Ό λͺ¨λ‘ μ΄λ™μ‹œμΌœμ•Ό 함

🏷️ List

λ°°μ—΄κ³Ό μœ μ‚¬ν•œ 순차적인 자료ꡬ쑰λ₯Ό μ œκ³΅ν•˜λ©°, λ°°μ—΄μ˜ λ¬Έμ œμ μ„ λ³΄μ™„ν•œ 자료 ꡬ쑰

β“νŠΉμ§•

  1. 데이터 크기가 κ³ μ •λ˜μ§€ μ•ŠμŒ
  2. λ¦¬μŠ€νŠΈμ— λ“€μ–΄κ°€λŠ” λ°μ΄ν„°λŠ” μ„œλ‘œ λ‹€λ₯Έ μžλ£Œν˜•μœΌλ‘œ μ‚¬μš© κ°€λŠ₯
  3. λ°°μ—΄ 쀑간에 κ°’ μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œ 용이
  4. νŠΉμ • 데이터가 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 확인 κ°€λŠ₯

✍🏼 List method

λ©”μ†Œλ“œλͺ…μ„€λͺ…
List.add(value)
데이터 μΆ”κ°€
List.add(index, value)
index μœ„μΉ˜μ— value μΆ”κ°€
List.set(index, value)
index μœ„μΉ˜μ— value κ°’μœΌλ‘œ μΉ˜ν™˜
List.remove(index)
index μœ„μΉ˜μ˜ κ°’ μ‚­μ œ
List.get(index)
index μœ„μΉ˜μ˜ κ°’ λ°˜ν™˜
List.size()
리슀트 크기 λ°˜ν™˜

Β 

ArrayList πŸ†š LinkedList

  • ArrayList : 데이터λ₯Ό 순차적으둜 μΆ”κ°€ν•˜κ³ , λ°°μ—΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ 크기λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ 데이터 μΆ”κ°€ μ‹œ 크기가 증가됨.
  • LinkedList : 데이터 κ°„ λ§ν¬λ˜μ–΄ μ €μž₯됨. ν•˜λ‚˜μ˜ λ°μ΄ν„°μ—λŠ” 이전 데이터와 λ‹€μŒ λ°μ΄ν„°μ˜ μ£Όμ†Œλ“€μ΄ μ„œλ‘œ μ—°κ²°λ˜μ–΄ 있음.

    >> img ref.

❓차이점

ArrayList λŠ” 데이터λ₯Ό 쀑간에 μ‚½μž…ν•  λ•Œ, λ’€μ˜ 데이터듀이 λͺ¨λ‘ ν•œ μΉΈμ”© 밀렀남 >> μ„±λŠ₯상 μ’‹μ§€ μ•ŠμŒ
LinkedList λŠ” 데이터λ₯Ό 쀑간에 μ‚½μž…ν•  λ•Œ, 데이터λ₯Ό ν•˜λ‚˜ λ§Œλ“€κ³  이전 μ£Όμ†Œμ˜ 연결을 끊고 μ£Όμ†Œλ§Œ λ³€κ²½ν•˜μ—¬ μƒˆλ‘œ μ—°κ²°ν•˜λ©΄ 됨 >> 효율적 O


🏷️ Map

데이터λ₯Ό 킀와 κ°’μ˜ 쌍으둜 μ €μž₯ν•˜λŠ” 자료ꡬ쑰

  • ν‚€λ₯Ό μ‚¬μš©ν•΄ 데이터에 μ ‘κ·Ό

β“νŠΉμ§•

  1. ν‚€λŠ” μ€‘λ³΅λœ κ°’μ˜ μž…λ ₯이 λΆˆκ°€ν•˜μ§€λ§Œ, 값은 쀑볡 ν—ˆμš©

  2. 데이터 검색 μ‹œ νš¨μœ¨μ μž„

  3. ν‚€λŠ” set에 μ €μž₯(μˆœμ„œX, 쀑볡X)

    ✍🏼 Map method

    λ©”μ†Œλ“œλͺ…μ„€λͺ…
    Map.put(key, value)
    key와 valueκ°’μœΌλ‘œ 이루어진 데이터 μΆ”κ°€
    Map.get(key)
    key에 μ €μž₯된 데이터 λ°˜ν™˜
    Map.remove(key)
    key 데이터 μ‚­μ œ
    Map.size()
    Map λ°μ΄ν„°μ˜ μ‚¬μ΄μ¦ˆ λ°˜ν™˜
    Map.containsKey(key)
    key 쑴재 μ—¬λΆ€ νŒλ‹¨
    Map.containsValue(value)
    value 쑴재 μ—¬λΆ€ νŒλ‹¨

🏷️ Set

μ €μž₯된 μš”μ†Œλ“€μ΄ μˆœμ„œκ°€ μ—†κ³ , 데이터λ₯Ό μ€‘λ³΅μœΌλ‘œ μ €μž₯ λΆˆκ°€ν•œ 자료ꡬ쑰

  • 인덱슀λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³ , iterator λ₯Ό μ‚¬μš©ν•΄ μ ‘κ·Ό

    ✍🏼 Set method

    λ©”μ†Œλ“œλͺ…
    μ„€λͺ…
    Set.add(object)
    Set 객체에 μš”μ†Œ μΆ”κ°€
    Set.remove(object)
    Set 객체에 μ „λ‹¬λœ μš”μ†Œ 제거
    Set.clear()
    Set 객체에 λͺ¨λ“  μš”μ†Œ 제거
    Set.size()
    Set 객체의 μš”μ†Œ 총 개수 λ°˜ν™˜
    Set.contains(object)
    Set 객체에 μš”μ†Œ 쑴재 μ—¬λΆ€ νŒλ‹¨
    Set.isEmpty()
    Set 객체가 μš”μ†Œκ°€ λΉ„μ–΄μžˆλŠ”μ§€ μ—¬λΆ€ νŒλ‹¨

🏷️ Queue

데이터λ₯Ό μ„ μž…μ„ μΆœ(FIFO)의 μˆœμ„œλ‘œ μ²˜λ¦¬ν•˜λŠ” 자료ꡬ쑰

  • λ°μ΄ν„°μ˜ μΆ”κ°€λŠ” λ’€(rear, tail)μ—μ„œ 이루어지고, μ œκ±°λŠ” μ•ž(front, head)μ—μ„œ 이루어짐
  • λ°μ΄ν„°μ˜ λŒ€κΈ°μ—΄μ΄λ‚˜ 버퍼 등에 μ‚¬μš©ν•˜λ©° 순차적인 자료 μ²˜λ¦¬μ— μœ μš©ν•¨.
  • 큐에 데이터가 없을 λ•Œ 데이터λ₯Ό κΊΌλ‚΄λ €κ³  ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒ >> 큐가 λΉ„μ–΄μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” μž‘μ—… ν•„μš”

    ✍🏼 Queue method

    λ©”μ†Œλ“œλͺ…
    μ„€λͺ…
    Queue.add(value)
    큐의 맨 뒀에 κ°’ μΆ”κ°€
    Queue.element()
    큐의 맨 μ•ž κ°’ λ°˜ν™˜. 큐가 λΉ„μ–΄μžˆμ„ 경우 NoSuchElementException μ—λŸ¬ λ°œμƒ
    Queue.peek()
    큐의 맨 μ•ž κ°’ λ°˜ν™˜. λΉ„μ–΄μžˆμ„ 경우 null λ°˜ν™˜
    Queue.poll()
    큐의 맨 μ•ž κ°’ λ°˜ν™˜ ν›„ μ‚­μ œ. λΉ„μ–΄μžˆμ„ 경우 null λ°˜ν™˜
    Queue.remove()
    큐의 맨 μ•ž κ°’ λ°˜ν™˜ ν›„ μ‚­μ œ. λΉ„μ–΄μžˆμ„ 경우 NoSuchElementException μ—λŸ¬ λ°œμƒ
    Queue.clear()
    큐 전체 데이터 λΉ„μš°κΈ°
profile
πŸœπŸ‘£steadinessπŸœπŸ‘£

0개의 λŒ“κΈ€