-
[Java] Collection Framework (컬λ μ νλ μμν¬)λ?Java 2023. 1. 14. 19:50
π Collection Frameworkλ
컬λ μ μ μ¬λ¬ μμλ₯Ό νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΄ ν¨μ¨μ μΌλ‘ μ μ₯νκ³ , κ΄λ¦¬ν μ μλ κΈ°λ₯μ μ 곡νλ ν΄λμ€μ μ§ν©μ΄λ€. μλ₯Ό λ€λ©΄ λ°°μ΄μ ν¬κΈ°κ° κ³ μ λμ΄ μμ§λ§, 컬λ μ νλ μμν¬λ κ°λ³μ μΈ ν¬κΈ°λ₯Ό κ°λ νΉμ§μ΄ μλ€. λν λ°μ΄ν° μ½μ , νμ, μ λ ¬ λ±μ API λ₯Ό μ 곡νλ€. μ΄λ¬ν 컬λ μ νλ μμν¬λ μλ°μ μΈν°νμ΄μ€(interface)λ₯Ό μ¬μ©νμ¬ κ΅¬νλλ€.
π Collection Frameworkμ μ’ λ₯
π Collection μΈν°νμ΄μ€
β 리μ€νΈ (List)
μΈλ±μ€ μμλ‘ μμλ₯Ό μ μ₯νλ€. μ€λ³΅λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ€. μλλ Listλ₯Ό μμ λ°μ ꡬνν λν ν΄λμ€ λ° μκ° λ³΅μ‘λ (Time complexity)μ΄λ€.
add() remove() get() contains() ArrayList O(1) O(n) O(1) O(n) LinkedList O(1) O(1) O(n) O(n) Vector O(1) O(n) O(1) O(n) Stack O(1) O(1) O(n) O(n) β ν (Queue)
λ°μ΄ν°κ° μ μ₯λ μμλλ‘ μΆλ ₯λλ μ μ μ μΆ (FIFO: First In First Out) μ ꡬ쑰λ₯Ό κ°λ μ ν μλ£κ΅¬μ‘°μ΄λ€. μλλ Queueλ₯Ό μμ λ°μ ꡬνν λν ν΄λμ€ λ° μκ° λ³΅μ‘λ (Time complexity)μ΄λ€.
offer() peak() poll() size() Data Structure PriorityQueue O(log n) O(1) O(log n) O(1) Priority Heap ArrayDequeue O(1) O(1) O(1) O(1) Linked List β μ§ν© (Set)
μμ κ° μμΌλ©°, λ°μ΄ν°λ₯Ό μ€λ³΅νμ¬ μ μ₯ν μ μλ€. μλλ Setλ₯Ό μμ λ°μ ꡬνν λν ν΄λμ€ λ° μκ° λ³΅μ‘λ (Time complexity)μ΄λ€.
add() contains() next() Data Structure HashSet O(1) O(1) O(h / n) Hash Table LinkedHashSet O(1) O(1) O(1) Hash Table + Linked List TreeSet O(log n) O(log n) O(log n) Red-black tree β Map μΈν°νμ΄μ€
Key, value μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ€. μμκ° μ‘΄μ¬νμ§ μμΌλ©°, Key κ° μ€λ³΅λ μ μλ€. μλλ Mapμ μμ λ°μ ꡬνν λν ν΄λμ€ λ° μκ° λ³΅μ‘λ (Time complexity)μ΄λ€.
get() containsKey() next() Data Structure HashMap O(1) O(1) O(h / n) Hash Table TreeMap O(log n) O(log n) O(log n) Red-black tree h : ν΄μ¬ λ²ν· μ¬μ΄μ¦, n : λ°μ΄ν° μ¬μ΄μ¦
Reference