day15_enum, generic, μ˜ˆμ™Έ 처리, collections framework

초둝꼬마·2022λ…„ 9μ›” 13일
0

bootcamp_Learning

λͺ©λ‘ 보기
16/35


πŸ“— 였늘의 ν•™μŠ΅ topics

🌿 μ—΄κ±°ν˜•(Enum)
🌿 μ œλ„€λ¦­(Generic)
🌿 μ˜ˆμ™Έ(Exception) 처리(Handling)
🌿 Collection Framework


🌿 μ—΄κ±°ν˜•(Enum)

  • μ—΄κ±°ν˜•μ„ μ‚¬μš©ν•˜λŠ” 이유λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€.
  • μ—΄κ±°ν˜•μ„ μ •μ˜ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€.

🌱

βœ”οΈ

// 

❕

🌱

🌱


🌿 μ œλ„€λ¦­(Generic)

  • μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λŠ” 이유λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€.
  • νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ„ μ–Έν•˜μ—¬ μ œλ„€λ¦­ 클래슀 λ‚΄μ—μ„œ νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  • νƒ€μž…μ„ μ§€μ •ν•  λ•Œ μ œν•œμ„ λΆ€κ³Όν•  수 μžˆλ‹€.
  • μ œλ„€λ¦­ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.
  • μ™€μΌλ“œμΉ΄λ“œμ˜ μƒν•œ μ œν•œκ³Ό ν•˜ν•œ μ œν•œμ„ μ„€λͺ…ν•  수 μžˆλ‹€.

🌱 μ œλ„€λ¦­μ΄λž€?

클래슀/λ©”μ„œλ“œ μ½”λ“œλ₯Ό μž‘μ„± μ‹œ, νƒ€μž…μ„ ꡬ체적으둜 μ§€μ •x, 좔후에 μ§€μ •ν•  수 μžˆλ„λ‘ μΌλ°˜ν™”ν•΄λ‘λŠ” 것 β†’ μž‘μ„±ν•œ 클래슀/λ©”μ„œλ“œ μ½”λ“œκ°€ νŠΉμ • 데이터 νƒ€μž…μ— 얽맀이지 μ•ŠμŒ

🌱 μ œλ„€λ¦­ 클래슀

= μ œλ„€λ¦­μ΄ μ‚¬μš©λœ 클래슀

βœ”οΈ T = νƒ€μž… λ§€κ°œλ³€μˆ˜ β†’ 클래슀λͺ… 였λ₯Έμͺ½μ—<T>와 같이 μž‘μ„± = 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  νƒ€μž… λ§€κ°œλ³€μˆ˜ μ„ μ–Έ β†’ 클래슀 λͺΈμ²΄μ—μ„œ Tλ₯Ό μž„μ˜μ˜ νƒ€μž…μœΌλ‘œ μ‚¬μš© κ°€λŠ₯

  • νƒ€μž… λ§€κ°œλ³€μˆ˜λŠ” μž„μ˜μ˜ 문자둜 μ§€μ • κ°€λŠ₯
    • 단, T = type, K = key, V = value, E = element, N = number, R = result λ“± 자주 μ‚¬μš©
  • 객체 생성 μ‹œ μƒμ„±μžμ—λŠ” ꡬ체적인 νƒ€μž… μƒλž΅ κ°€λŠ₯ ← μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž…μœΌλ‘œλΆ€ν„° μœ μΆ” κ°€λŠ₯
  • μ œλ„€λ¦­ 클래슀 μ‚¬μš© μ‹œ λ‹€ν˜•μ„± 적용 κ°€λŠ₯

❕ 클래슀 λ³€μˆ˜μ—λŠ” νƒ€μž… λ§€κ°œλ³€μˆ˜ μ‚¬μš©ν•  수 μ—†μŒ
μ™œλƒν•˜λ©΄, 클래슀 λ³€μˆ˜μ— νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€λ©΄, 클래슀 λ³€μˆ˜μ˜ νƒ€μž…μ΄ μΈμŠ€ν„΄μŠ€λ³„λ‘œ λ‹¬λΌμ§€κ²Œ λ˜λŠ”λ°(즉, μΈμŠ€ν„΄μŠ€1κ³Ό μΈμŠ€ν„΄μŠ€2의 클래슀 λ³€μˆ˜κ°€ λ‹€λ₯Έ νƒ€μž…μ΄μž λ‹€λ₯Έ μ‘΄μž¬μž„), μ΄λŠ” 클래슀 λ³€μˆ˜μ˜ μ •μ˜/νŠΉμ„±(ν•΄λ‹Ή 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” λ³€μˆ˜)κ³Ό λͺ¨μˆœμΈ μƒνƒœκ°€ 되기 λ•Œλ¬Έμ΄λ‹€.

❕ νƒ€μž… λ§€κ°œλ³€μˆ˜μ— μΉ˜ν™˜λ  νƒ€μž…μœΌλ‘œ κΈ°λ³Έ/μ›μ‹œ/primitive νƒ€μž…μ€ μ§€μ •ν•  수 μ—†μŒ
β†’ wrapper 클래슀 μ‚¬μš©

βœ”οΈ μ œλ„€λ¦­ 클래슀 μ˜ˆμ‹œ1

// λͺ¨λ“  νƒ€μž…μ˜ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” μΈμŠ€ν„΄μŠ€ 생성 κ°€λŠ₯
class Basket<T> {
    private T item;

    public Basket(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }

    public void setItem(T item) {
        this.item = item;
    }
}

βœ”οΈ νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό 2개 이상 μ‚¬μš©ν•  μˆ˜λ„ 있음

class InfoMap<K, V> {
    private K key;
    private V value;

    public InfoMap(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public void setKey(K key) {
        this.key = key;
    }

    public V getValue() {
        return value;
    }

    public void setValue(V value) {
        this.value = value;
    }
}

🌱 μ œλ„€λ¦­ λ©”μ„œλ“œ


🌿 μ˜ˆμ™Έ(Exception) 처리(Handling)

  • ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ˜ˆμ™Έ μ²˜λ¦¬κ°€ 무엇인지 이해할 수 μžˆλ‹€ + μ˜ˆμ™Έ μ²˜λ¦¬κ°€ ν•„μš”ν•œ 이유λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€
  • 컴파일 μ—λŸ¬μ™€ λŸ°νƒ€μž„ μ—λŸ¬μ˜ 차이λ₯Ό μ΄ν•΄ν•˜κ³  μ„€λͺ…ν•  수 μžˆλ‹€.
  • μžλ°” μ˜ˆμ™Έ 클래슀의 상속 계측도λ₯Ό 톡해 클래슀 κ°„ 관계λ₯Ό 이해할 수 μžˆλ‹€ β†’ μ˜ˆμ™Έ 클래슀의 상속 ꡬ쑰λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€
  • μžλ°”μ˜ 핡심적인 μ˜ˆμ™Έ 처리 방법인 try-catch λ¬Έκ³Ό μ˜ˆμ™Έ 전가에 λŒ€ν•΄ 이해/μ„€λͺ…ν•  수 있고, μ‚¬μš©ν•˜μ—¬ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.
  • throws ν‚€μ›Œλ“œμ™€ throw ν‚€μ›Œλ“œμ˜ 차이에 κ΄€ν•΄ μ„€λͺ…ν•  수 μžˆλ‹€.

🌱

🌱

🌱


🌿 Collection Framework

  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•  λ•Œμ˜ μž₯점을 μ„€λͺ…ν•  수 μžˆλ‹€.
  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ˜ μ£Όμš” μΈν„°νŽ˜μ΄μŠ€μΈ List, Set, Map의 νŠΉμ„±κ³Ό 차이점을 μ„€λͺ…ν•  수 μžˆλ‹€.
  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ˜ ꡬ쑰λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€.
  • ArrayList와 LinkedList의 차이λ₯Ό μ„€λͺ…ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€.
  • HashSetκ³Ό TreeSet의 차이λ₯Ό μ„€λͺ…ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€.
  • HashMap을 μ‚¬μš©ν•  수 μžˆλ‹€.
  • Iteratorλ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¬λ ‰μ…˜μ„ μˆœνšŒν•  수 μžˆλ‹€.

🌱

🌱

🌱


πŸ’‘ 생각해보기

  1. java.lang.Object 클래슀의 λ©”μ„œλ“œλ“€
    cf. https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
  2. μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ μ†ŒμŠ€μ½”λ“œ 뢄석 β†’ μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ κ΅¬ν˜„ 클래슀 κ°„ 상속/κ΅¬ν˜„ 관계 νŒŒμ•…
  3. Java λ°°μ—΄ vs ArrayList
  4. λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μžˆμ–΄μ„œ λ›°μ–΄λ‚œ μ„±λŠ₯을 λ³΄μ΄λŠ” Hashing

πŸ€ 였늘의 μ†Œκ°

문제 풀이 등에 ν™œμš©ν•˜κΈ° κΈ‰κΈ‰ν•΄ μ œλŒ€λ‘œ μ •λ¦¬ν•˜μ§€ λͺ»ν–ˆλ˜ κ°œλ…λ“€μ„ 꼼꼼히 μ‚΄νŽ΄λ³Ό 수 μžˆμ–΄ μœ μ΅ν–ˆκ³ , 많이 λ°°μ› λ‹€!

profile
green piano rabbit

0개의 λŒ“κΈ€