2022. 5. 8. 15:06γJAVA/μλ°μ μ μ
컬λ μ : μ¬λ¬ κ°μ²΄(λ°μ΄ν°)λ₯Ό λͺ¨μλμ κ²μ μλ―Ένλ€.
νλ μμν¬ : νμ€ν, μ ννλ 체κ³μ μΈ νλ‘κ·Έλλ° λ°©μ
컬λ μ νλ μμν¬ : λ€μμ κ°μ²΄(컬λ μ )μ λ€λ£¨κΈ° μν νμ€νλ νλ‘κ·Έλλ° λ°©μ
-> 컬λ μ μ μ½κ³ νΈλ¦¬νκΈ° λ€λ£° μ μλ λ€μν ν΄λμ€λ₯Ό μ 곡νλ€.
컬λ μ ν΄λμ€: λ€μμ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ ν΄λμ€
1οΈβ£ 컬λ μ νλ μμν¬μ ν΅μ¬ μΈν°νμ΄μ€
컬λ μ νλ μμν¬μμλ 컬λ μ λ°μ΄ν° κ·Έλ£Ήμ ν¬κ² 3κ°μ§ νμ μ΄ μ‘΄μ¬νλ€κ³ μΈμνκ³ κ° μ»¬λ μ μ λ€λ£¨λλ° νμν κΈ°λ₯μ κ°μ§ 3κ°μ μΈν°νμ΄μ€λ₯Ό μ μνμλ€.
List
: μμκ° μλ λ°μ΄ν°μ μ§ν©, λ°μ΄ν°μ μ€λ³΅μ νμ©νλ€.
ArrayList, LinkedList, Stack, Vector λ±
Set
: μμλ₯Ό μ μ§νμ§ μλ λ°μ΄ν°μ μ§ν©, λ°μ΄ν°μ μ€λ³΅μ νμ©νμ§ μλλ€.
HashSet, TreeSet λ±
Map
: ν€μ κ°μ μμΌλ‘ μ΄λ£¨μ΄μ§ λ°μ΄ν°μ μ§ν©, μμλ μ μ§λμ§ μμΌλ©°, ν€λ μ€λ³΅μ νμ©νμ§ μκ³ , κ°μ μ€λ³΅μ νμ©νλ€.
HashMap, TreeMap, HashTable, Properties λ±
List μ Set μ ꡬνν 컬λ μ ν΄λμ€λ€μ μλ‘ λ§μ 곡ν΅λΆλΆμ΄ μμ΄μ 곡ν΅λ λΆλΆμ λ€μ λ½μ Collection μΈν°νμ΄μ€λ₯Ό μ μν μ μμμ§λ§ Map μΈν°νμ΄μ€λ μ΄λ€κ³Όλ μ ν λ€λ₯Έ ννλ‘ μ»¬λ μ μ λ€λ£¨κΈ° λλ¬Έμ κ°μ μμκ³μΈ΅λμ ν¬ν¨λμ§ λͺ»νλ€.
컬λ μ νλ μμν¬μ λͺ¨λ 컬λ μ ν΄λμ€λ€μ List, Set, Map μ€μ νλλ₯Ό ꡬννκ³ μμΌλ©°, ꡬνν μΈν°νμ΄μ€μ μ΄λ¦μ΄ ν΄λμ€μ μ΄λ¦μ ν¬ν¨λμ΄ μμ΄μ μ΄λ¦λ§μΌλ‘ ν΄λμ€μ νΉμ§μ μ½κ² μ μ μλλ‘ λμ΄ μλ€.
Vectorλ HashTableκ³Ό κ°μ κΈ°μ‘΄μ 컬λ μ ν΄λμ€λ€μ νΈνμ μν΄ μ€κ³λ₯Ό λ³κ²½ν΄μ λ¨κ²¨λμμ§λ§, κ°λ₯νλ©΄ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€.
κ·Έ λμ μλ‘ μΆκ°λ ArrayListμ HashMapμ μ¬μ©νμ!
- Collection μΈν°νμ΄μ€
Collection μΈν°νμ΄μ€λ 컬λ μ ν΄λμ€μ μ μ₯λ λ°μ΄ν°λ₯Ό μ½κ³ , μΆκ°νκ³ , μμ νλ λ± μ»¬λ μ μ λ€λ£¨λλ° κ°μ₯ κΈ°λ³Έμ μΈ λ©μλλ€μ μ μνκ³ μλ€.
- List μΈν°νμ΄μ€
List μΈν°νμ΄μ€λ μ€λ³΅μ νμ©νλ©΄μ μ μ₯μμκ° μ μ§λλ 컬λ μ μ ꡬννλλ° μ¬μ©λλ€.
- Set μΈν°νμ΄μ€
Set μΈν°νμ΄μ€λ μ€λ³΅μ νμ©νμ§ μκ³ μ μ₯μμκ° μ μ§λμ§ μλ 컬λ μ ν΄λμ€λ₯Ό ꡬννλλ° μ¬μ©λλ€.
- Map μΈν°νμ΄μ€
Map μΈν°νμ΄μ€λ ν€Key μ κ°Value μ νλμ μμΌλ‘ λ¬Άμ΄μ μ μ₯νλ 컬λ μ ν΄λμ€λ₯Ό ꡬννλ λ° μ¬μ©λλ€.
ν€λ μ€λ³΅λ μ μμ§λ§ κ°μ μ€λ³΅μ νμ©νλ€. κΈ°μ‘΄μ μ μ₯λ λ°μ΄ν°μ μ€λ³΅λ ν€μ κ°μ μ μ₯νλ©΄ κΈ°μ‘΄μ κ°μ μμ΄μ§κ³ λ§μ§λ§μ μ μ₯λ κ°μ΄ λ¨κ²λλ€.
values()μμλ λ°ννμ μ΄ CollectionμΌλ‘ List, Set μ΄λ 컬λ μ ν΄λμ€κ° μλ λμ§λ§, KeySet() μμλ λ°ννμ μ΄ Setμ΄λ€!
Map μΈν°νμ΄μ€μμ κ°μ μ€λ³΅μ νμ©νκΈ° λλ¬Έμ Collection νμ μΌλ‘ λ°ννκ³ , ν€λ μ€λ³΅μ νμ©νμ§ μκΈ° λλ¬Έμ Set νμ μΌλ‘ λ°ννλ€.
2οΈβ£ ArrayList
ArrayList λ 컬λ μ νλ μμν¬μμ κ°μ₯ λ§μ΄ μ¬μ©λλ 컬λ μ ν΄λμ€μΌ κ²μ΄λ€.
ArrayList λ List μΈν°νμ΄μ€λ₯Ό ꡬννκΈ° λλ¬Έμ λ°μ΄ν°μ μ μ₯μμκ° μ μ§λκ³ μ€λ³΅μ νμ©νλ€λ νΉμ§μ΄ μλ€.
ArrayList λ Object λ°°μ΄μ μ΄μ©ν΄μ λ°μ΄ν°λ₯Ό μμ°¨μ μΌλ‘ μ μ₯νλ€.
μ μΈλ λ°°μ΄μ νμ μ΄ λͺ¨λ κ°μ²΄μ μ΅κ³ μ‘°μμΈ Object μ΄κΈ° λλ¬Έμ λͺ¨λ μ’ λ₯μ κ°μ²΄λ₯Ό λ΄μ μ μλ€.
-> ArrayList λ List μΈν°νμ΄μ€λ₯Ό ꡬννκΈ° λλ¬Έμ μ μ₯λ μμλ₯Ό μ μ§νλ€λ κ²μ μ μ μλ€.
-> list2μμ list1μ ν¬ν¨λ κ°μ²΄λ€μ μ κ±°νλ λΆλΆμ΄λ€.
λ§μΌ λ³μ i λ₯Ό μ¦κ°μμΌκ°λ©΄μ μμ νλ©΄, ν μμκ° μμ λ λ λ§λ€ λΉ κ³΅κ°μ μ±μ°κΈ° μν΄ λλ¨Έμ§ μμλ€μ΄ μ리μ΄λμ νκΈ° λλ¬Έμ μ¬λ°λ₯Έ κ²°κ³Όλ₯Ό μ»μ μ μλ€. κ·Έλμ μ μ΄ λ³μλ₯Ό κ°μμμΌκ°λ©΄μ μμ λ₯Ό ν΄μΌ μ리μ΄λμ΄ λ°μν΄λ μν₯μ λ°μ§ μκ³ μμ μ΄ κ°λ₯νλ€!!
3οΈβ£ LinkedList
λ°°μ΄μ κ°μ₯ κΈ°λ³Έμ μΈ ννμ μλ£κ΅¬μ‘°λ‘ κ΅¬μ‘°κ° κ°λ¨νλ©° μ¬μ©νκΈ° μ½κ³ λ°μ΄ν°λ₯Ό μ½μ΄μ€λλ° κ±Έλ¦¬λ μκ°(μ κ·Ό μκ°)μ΄ κ°μ₯ λΉ λ₯΄λ€λ μ₯μ μ κ°μ§κ³ μλ€.
λ°°μ΄μ λ¨μ
1. ν¬κΈ°λ₯Ό λ³κ²½ν μ μλ€.
- ν¬κΈ°λ₯Ό λ³κ²½ν μ μκΈ° λλ¬Έμ μλ‘μ΄ λ°°μ΄μ μμ±ν΄μ λ°μ΄ν°λ₯Ό 볡μ¬ν΄μΌνλ€.
- μ€νμλλ₯Ό ν₯μμν€κΈ° μν΄μλ μΆ©λΆν ν° ν¬κΈ°μ λ°°μ΄μ μμ±ν΄μΌ νλ―λ‘ λ©λͺ¨λ¦¬κ° λλΉλλ€.
2. λΉμμ°¨μ μΈ λ°μ΄ν°μ μΆκ° λλ μμ μ μκ°μ΄ λ§μ΄ κ±Έλ¦°λ€.
- μ°¨λ‘λλ‘ λ°μ΄ν°λ₯Ό μΆκ°νκ³ λ§μ§λ§μμλΆν° λ°μ΄ν°λ₯Ό μμ νλ κ²μ λΉ λ₯΄μ§λ§,
- λ°°μ΄μ μ€κ°μ λ°μ΄ν°λ₯Ό μΆκ°νλ €λ©΄, λΉ μ리λ₯Ό λ§λ€κΈ° μν΄μ λ€λ₯Έ λ°μ΄ν°λ€μ 볡μ¬ν΄μ μ΄λν΄μΌ νλ€.
λ°°μ΄μ λ¨μ μ 보μνκΈ° μν΄μ λ§ν¬λ 리μ€νΈ LinkedList λΌλ μλ£κ΅¬μ‘°κ° κ³ μλμλ€.
λ°°μ΄μ λͺ¨λ λ°μ΄ν°κ° μ°μμ μΌλ‘ μ‘΄μ¬νμ§λ§ λ§ν¬λ 리μ€νΈλ λΆμ°μμ μΌλ‘ μ‘΄μ¬νλ λ°μ΄ν°λ₯Ό μλ‘ μ°κ²°ν ννλ‘ κ΅¬μ±λμ΄ μλ€.
λ§ν¬λ 리μ€νΈμμ μμ λ μμ νκ³ μ νλ μμμ μ΄μ μμκ° μμ νκ³ μ νλ μμμ λ€μ μμλ₯Ό μ°Έμ‘°νλλ‘ λ³κ²½νκΈ°λ§ νλ©΄ λλ€.
λ¨ νλμ μ°Έμ‘°λ§ λ³κ²½νλ©΄ μμ κ° μ΄λ£¨μ΄μ§λ€!
λ°°μ΄μ²λΌ λ°μ΄ν°λ₯Ό μ΄λνκΈ° μν΄ λ³΅μ¬νλ κ³Όμ μ΄ μκΈ° λλ¬Έμ μ²λ¦¬μλκ° λ§€μ° λΉ λ₯΄λ€.
μλ‘μ΄ λ°μ΄ν°λ₯Ό μΆκ°ν λλ μλ‘μ΄ μμλ₯Ό μμ±ν λ€μ μΆκ°νκ³ μ νλ μμΉμ μ΄μ μμμ μ°Έμ‘°λ₯Ό μλ‘μ΄ μμμ λν μ°Έμ‘°λ‘ λ³κ²½ν΄μ£Όκ³ , μλ‘μ΄ μμκ° κ·Έ λ€μ μμλ₯Ό μ°Έμ‘°νλλ‘ λ³κ²½νκΈ°λ§ νλ©΄ λλ―λ‘ μ²λ¦¬μλκ° λ§€μ° λΉ λ₯΄λ€.
λ§ν¬λ 리μ€νΈλ μ΄λλ°©ν₯μ΄ λ¨λ°©ν₯μ΄κΈ° λλ¬Έμ λ€μ μμμ λν μ κ·Όμ μ½μ§λ§ μ΄μ μμμ λν μ κ·Όμ μ΄λ ΅λ€.
-> μ΄μ μ 보μν κ²μ΄ λλΈ λ§ν¬λ 리μ€νΈ(μ΄μ€ μ°κ²° 리μ€νΈ, Doubly Liked List) μ΄λ€.
λλΈ λ§ν¬λ 리μ€νΈλ λ¨μν λ§ν¬λ 리μ€νΈμ μ°Έμ‘°λ³μλ₯Ό νλ λ μΆκ°νμ¬ λ€μ μμμ λν μ°Έμ‘°λΏ μλλΌ μ΄μ μμμ λν μ°Έμ‘°κ° κ°λ₯νλλ‘ νμ λΏ, κ·Έ μΈμλ λ§ν¬λ 리μ€νΈμ κ°λ€.
λλΈ λ§ν¬λ 리μ€νΈλ λ§ν¬λ 리μ€νΈλ³΄λ€ κ° μμμ λν μ κ·Όκ³Ό μ΄λμ΄ μ½κΈ° λλ¬Έμ λ§ν¬λ 리μ€νΈλ³΄λ€ λ λ§μ΄ μ¬μ©νλ€.
λλΈ λ§ν¬λ 리μ€νΈμ μ κ·Όμ±μ λ³΄λ€ ν₯μμν¨ κ²μ΄ λλΈ μ¨νλ¬ λ§ν¬λ 리μ€νΈ(μ΄μ€ μν μ°κ²°λ¦¬μ€νΈ, doubly circular linked list) μΈλ°, λ¨μν λλΈ λ§ν¬λ 리μ€νΈμ 첫λ²μ§Έ μμμ λ§μ§λ§ μμλ₯Ό μλ‘ μ°κ²°μν¨ κ²μ΄λ€.
1. μμ°¨μ μΌλ‘ μΆκ°/μμ νλ κ²½μ°μλ ArrayList κ° LinkedListλ³΄λ€ λΉ λ₯΄λ€.
2. μ€κ° λ°μ΄ν°λ₯Ό μΆκ°/μμ νλ κ²½μ°μλ LinkedListκ° ArrayListλ³΄λ€ λΉ λ₯΄λ€.
μΈλ±μ€κ° nμΈ λ°μ΄ν°μ μ£Όμ = λ°°μ΄μ μ£Όμ + n * λ°μ΄ν° νμ μ ν¬κΈ°
-> λ°°μ΄μ κ²½μ°μλ λ§μΌ μΈλ±μ€κ° nμΈ μμμ κ°μ μ»μ΄μ€κ³ μ νλ©΄ λ¨μν μ΄ μμ κ³μ°ν¨μΌλ‘μ¨ ν΄κ²°λλ€!!!
-> ArrayList λ λ°°μ΄κΈ°λ°(μ°μμ ), LinkedListλ μ°κ²°κΈ°λ°(λΆμ°μμ )
4οΈβ£ Stackκ³Ό Queue
μ€νμ λ§μ§λ§μ μ μ₯ν λ°μ΄ν°λ₯Ό κ°μ₯ λ¨Όμ κΊΌλ΄κ² λλ LIFO(Last In First Out)μΌλ‘ λμ΄ μκ³ ,
νλ μ²μμ μ μ₯ν λ°μ΄ν°λ₯Ό κ°μ₯ λ¨Όμ κΊΌλ΄κ² λλ FIFO(First In First Out)κ΅¬μ‘°λ‘ λμ΄ μλ€.
μμ°¨μ μΌλ‘ λ°μ΄ν°λ₯Ό μΆκ°νκ³ μμ νλ μ€νμλ ArrayListμ κ°μ λ°°μ΄ κΈ°λ°μ 컬λ μ ν΄λμ€κ° μ ν©νμ§λ§,
νλ λ°μ΄ν°λ₯Ό κΊΌλΌ λ νμ 첫λ²μ§Έ μ μ₯λ λ°μ΄ν°λ₯Ό μμ νκΈ° λλ¬Έμ ArrayList μ κ°μ λ°°μ΄κΈ°λ°μ 컬λ μ ν΄λμ€λ₯Ό μ¬μ©νλ€λ©΄ λ°μ΄ν°λ₯Ό κΊΌλΌλ λ§λ€ λΉ κ³΅κ°μ μ±μ°κΈ° μν΄μ λ°μ΄ν°μ 볡μ¬κ° λ°μνλ―λ‘ λΉν¨μ¨μ μ΄λ€
κ·Έλμ νλ ArrayList λ³΄λ€ λ°μ΄ν°μ μΆκ°/μμ κ° μ¬μ΄ LinkedListλ‘ κ΅¬ννλ κ²μ΄ λ μ ν©νλ€.
-> μλ°μμλ μ€νμ Stackν΄λμ€λ‘ ꡬννμ¬ μ 곡νκ³ μμ§λ§ νλ Queue μΈν°νμ΄μ€λ‘λ§ μ μν΄ λμμ λΏ λ³λμ ν΄λμ€λ₯Ό μ 곡νκ³ μμ§ μλ€.
λμ Queue μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ€μ΄ μμ΄μ μ΄ λ€ μ€ νλλ₯Ό μ νν΄μ μ¬μ©νλ©΄ λλ€.
Queue μΈν°νμ΄μ€μ μ μλ κΈ°λ₯μ μ¬μ©νκ³ μΆλ€λ©΄ 'All known Implementing Classes' μ μ νμλ ν΄λμ€λ€ μ€μμ μ λΉν κ²μ νλ κ³¨λΌ μ‘μμ Queue q = new LinkedList(); μ κ°μ μμΌλ‘ κ°μ²΄λ₯Ό μμ±ν΄μ μ¬μ©νλ©΄ λλ€.