Section#16 _ 컬λ μ νλ μμν¬
#1. 컬λ μ νλ μμν¬ (Collection Framework)
: νμν μλ£κ΅¬μ‘°λ₯Ό 미리 ꡬννμ¬ java.util ν¨ν€μ§μμ μ 곡
컬λ μ : κΈ°μ‘΄μ List, Queue, Tree λ±μ μλ£ κ΅¬μ‘°
νλ μμν¬ : ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ¬Άμ΄ λμ κ°λ
: Listμ Set μΈν°νμ΄μ€λ λͺ¨λ 컬λ μ μΈν°νμ΄μ€λ₯Ό μμλ°μ§λ§, Map μΈν°νμ΄μ€λ ꡬ쑰μμ μ°¨μ΄λ‘ λ³λλ‘ μ μ
#2. μ λ€λ¦ (Generic)
: λ°μ΄ν°μ νμ μ μΌλ°ννλ€λ κ²μ μλ―Έ
: ν΄λμ€λ λ©μλ μ μ μ μΌλ°ννμ¬ μ¬μ©ν λ°μ΄ν° νμ μ μ»΄νμΌν λ 미리 μ§μ νλ λ°©λ²
: μνλ λ°μ΄ν° νμ μ μμ λ‘κ² μ§μ νμ¬ μ μ₯ν μ μμ
#2-2 Generic μ μΈ λ° μμ±
: μ λ€λ¦ νμ → νμ μ νλΌλ―Έν°λ‘ κ°μ§λ ν΄λμ€μ μΈν°νμ΄μ€
: ν΄λμ€ λλ μΈν°νμ΄μ€ μ΄λ¦ λ€μ <> κΈ°νΈλ₯Ό μΆκ°νκ³ μμ νμ νλΌλ―Έν°λ₯Ό μ λ ₯
: Tλ₯Ό μ΄μ©ν΄ νμ μ μ ν, μ¬λ¬κ°μ νμ λ³μλ μΌν(,)λ‘ κ΅¬λΆνμ¬ λͺ μ
: μνλ²³ λλ¬Έμ νκΈμλ‘ νν
: ν΄λμ€μ μ λ€λ¦μ λΆμ¬νλ©΄ ν΄λΉ ν΄λμ€λ₯Ό μ μΈν λ λ°μ΄ν° νμ μ λΆμ¬
public class ν΄λμ€λͺ
<T> {...}
public interface μΈν°νμ΄μ€λͺ
<T> {...}
// T = Type Variable
#3. List 컬λ μ
: λ°°μ΄κ³Ό μ μ¬ν μλ£ κ΅¬μ‘°λ‘ μ€λ³΅μ΄ νμ©λλ©΄μ μ μ₯ μμκ° μ μ§λλ ꡬ쑰λ₯Ό μ 곡
: λ°°μ΄κ³Όλ λ€λ₯΄κ² ν¬κΈ°μ μ νμ΄ μκ³ , μ½μ , μμ , λ³κ²½μ κΈ°λ₯μ΄ μμ λ‘μ
: λ°μ΄ν°μ ν¬κΈ°λ₯Ό νΉμ ν μ μλ λ€λμ λ°μ΄ν°λ₯Ό μ μ₯ν λ μ©μ΄νκ² μ¬μ©ν μ μλ μλ£ κ΅¬μ‘°
#3-1 ArrayList
: κ°μ₯ λ§μ΄ μ¬μ©νλ List μΈν°νμ΄μ€μ λνμ μΈ κ΅¬ν ν΄λμ€
ArrayList λ°μ΄ν° μ μ₯
: add(E e), or add(int index, E e) λ©μλλ₯Ό μ¬μ© → E : 리μ€νΈ μ μΈ μ μ§μ ν μ μ₯ λ°μ΄ν° κ°μ²΄
ArrayList λ°μ΄ν° μΉν
: Listμ μ μ₯λ λ°μ΄ν°λ₯Ό λ³κ²½ κ°λ₯ λ³κ²½μ μνλ index μμΉμ μΉνν κ° λλ κ°μ²΄λ₯Ό μ§μ νλ©΄ ν΄λΉ μμΉμ κ°μ΄ λ³κ²½
void set(int index, E value);
ArrayList λ°μ΄ν° μμ
: ν΄λΉ μμΉμ 곡κ°κΉμ§ μμ → λ°°μ΄μ 곡κ°μ΄ μμ±λλ©΄ μμ λΆκ°λ₯, λΉ κ³΅λ°±μλ¦¬λ‘ νμΉΈμ© μμΌλ‘ μ΄λ
// νΉμ μμΉμ λ°μ΄ν° μμ
remove(int index)
// μ§μ ν λ°μ΄ν° μμ
remove(Object o)
ArrayList λ°μ΄ν° μ»κΈ°
: E get(int index) λ©μλλ₯Ό μ΄μ©ν΄ μνλ index μμΉμ μ μ₯λμ΄ μλ κ°μ μΆλ ₯
#3-2 LinedList
: λ°μ΄ν°μ λ€μ λ°μ΄ν°μ μ£Όμλ₯Ό κ°μ§λ λ Έλ(node) κ°μ²΄κ° μ°κ²°λμ΄ λ°μ΄ν°λ₯Ό μ μ₯νλ μλ£ κ΅¬μ‘°
: κ°μ²΄λ₯Ό μμ±νμ¬ μΈμ λ°μ΄ν°λ₯Ό λ§ν¬ν΄μ 체μΈμ²λΌ κ΄λ¦¬
: indexκ° μ€μ μ‘΄μ¬νμ§λ μμ§λ§, μλ‘ μ°κ²°λμ΄ μκΈ° λλ¬Έμ μμλ₯Ό μ μ μμ
LinkedList μ μΈ
: λΆλͺ¨ νμ μΌλ‘ μ μΈνκ±°λ κΈ°λ³Έ μ μΈ λ°©μμΈ μμ μ κ°μ²΄ νμ κ·Έλλ‘ μ μΈνλ λ°©μ
: LinkedList λ³Έμ°μ κΈ°λ₯μ λͺ¨λ μ¬μ©ν κ²½μ°μλ κΈ°λ³Έμ μΈ κ°μ²΄ μ μΈ λ°©μμ μ ν
LinkedList λ°μ΄ν° μ μ₯
: κΈ°λ₯μ ArrayListμ λμΌ, λμνλ λ°©μμ λ€λ¦
: μ°¨μ΄μ → λ Έλκ° κ°μ§κ³ μλ λ€μμ μ€λ κ°μ²΄μ μ£Όμλ§ λ³κ²½νλ©΄ λκΈ°μ λΉ λ₯΄κ² μ²λ¦¬ κ°λ₯
→ LinkedListμμ λ°μ΄ν°λ₯Ό μΆκ°ν λλ κΈ°μ‘΄μ μ°κ²°λμ΄ μλ λ§ν¬λ₯Ό λκ³ , μΆκ°λλ λ°μ΄ν°μ μλ‘κ² μ£Όμλ₯Ό μ°κ²°,
μΆκ°λλ λ Έλλ λ€μ μ¬ λ°μ΄ν°μ λ§ν¬νμ¬ μ½μ
LinkedList μμ
: ArrayListμ λμΌν remove λ©μλ μ¬μ©
: μμ ν λ°μ΄ν°μμ μ°κ²°μ λκ³ κ·Έ λ€μ λ°μ΄ν°μ μ°κ²°νμ¬ μ½κ² λ°μ΄ν°λ₯Ό μμ
#4 Set 컬λ μ
: List 컬λ μ κ³Ό λ€λ₯΄κ² κ°μ²΄μ μ μ₯ μμλ₯Ό μ μ₯νμ§λ μμ
: μνμ μ§ν©κ³Ό μ μ¬ν κ°λ
: λ°μ΄ν°μ μ€λ³΅ νμ©νμ§ μμ
: indexλ₯Ό λΆμ¬νμ§ μμ → λ°μ΄ν°κ° μ λ ₯λ μμλ‘ μΆλ ₯λμ§ μμ μ μμ
: λνμ μΌλ‘ HashSet, TreeSet, LinkedHashSet
#4-1 HashSetν΄λμ€
: μΈν°νμ΄μ€λ₯Ό μμλ°μ ꡬν
Set <E> set = new HashSet<>();
HashSet λ°μ΄ν° μ μ₯
: λμΌν κ° or κ°μ²΄λ₯Ό νμ©νμ§ μμ → λ°μ΄ν°λ₯Ό κ°μ²΄μ hashCode()κ°μ νΈμΆνμ¬ λΉκ΅ ν, κ°μΌλ©΄ equals() λ©μλλ₯Ό νΈμΆνμ¬ λ€μ λΉκ΅
HashSet λ°μ΄ν° μμ
: λ€λ₯Έ 컬λ μ κ³Ό λμΌνκ² remove(Object O) λ©μλλ₯Ό μ¬μ©
: Set 컬λ μ μ indexκ° μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ μμμ μν μμ λ μ§μνμ§ μμ
#5 λ°λ³΅μ Iterator
: μ¬μ μ μΈ μλ―Έ == λ°λ³΅νλ€
: List컬λ μ μ μμλ₯Ό μν → νλμ© μΆμΆνλλ° μ¬μ©
: μ μΈλ 컬λ μ κ°μ²΄μμ κ°μ Έμ μ¬μ©
#6 Map 컬λ μ
: Map μΈν°νμ΄μ€κ° λ³λλ‘ μ‘΄μ¬, λ°μ΄ν°λ₯Ό List κ³μ΄μ 컬λ μ κ³Ό λ€λ₯΄κ² μ²λ¦¬
: Map μΈν°νμ΄μ€λ λ°μ΄ν°λ₯Ό keyμ valueλ‘ κ΅¬λΆνμ¬ μ μ₯νλ λ°©μμ μ¬μ©
: λνμ μΌλ‘ HashMap, TreeMap, LinkedHashMap
: Key → μ€λ³΅λ μ μμ / value → μ€λ³΅μ΄ κ°λ₯
→ λ§μ½ μ€λ³΅λ κ²½μ° keyμ ν΄λΉνλ value κ°μ΄ μ λ°μ΄νΈ λμ΄ μ μ₯
: keyμ valueλ Entry λΌλ μΈν°νμ΄μ€μ μ μ₯ → Entry : μΈν°νμ΄μ€λ₯Ό μμν κ°μ²΄μ μ μ₯λλλ°, μ΄ μμμ μ μλλ λ΄λΆ μΈν°νμ΄μ€
#6-1 HashMap(K, V)
: hashingμ ν΅ν΄ keyμ μ€λ³΅ μ¬λΆ νλ¨
: keyλ‘ μ§μ λ κ°μ²΄μ hashCodeμ equals λ©μλλ₯Ό μ΄μ©ν΄ λμΌ μ¬λΆ νλ¨
HashMap μ μΈ λ° μ¬μ©λ²
: keyμ λν Genericμ΄ μΆκ°λ¨
Map <KEY, V> map = new HashMap<>();