μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- fibonacci
- μ λ€λ¦μ€
- 컬λ μ νλ μμν¬
- CLIλͺ λ Ήμ΄
- Publishing
- Spring Data JDBC
- λΆνΈμΊ ν
- κ±°λμ κ³±
- μ€νλ§
- CSS
- spring data jpa
- FilterChain
- μΈν 리μ μ΄
- μλ°
- HTML
- λ°μΌλ¦¬μ½λ©
- μκ³ λ¦¬μ¦
- κΉνλΈ
- λ°±μλ
- νκ³
- κ³μ°κΈ°λ§λ€κΈ°
- Spring Security
- 첫κΈμλλ¬Έμ
- μλ£κ΅¬μ‘°
- java
- νμ΄νλ‘κ·Έλλ°
- λ¬Έμμ΄λ€μ§κΈ°
- λ°±μ€μκ³ λ¦¬μ¦
- testing
- 그리λ
Archives
- Today
- Total
λμ λͺ¨μ
016 | Java - Generics, Collection Framework λ³Έλ¬Έ
π μ€λμ κ³΅λΆ - 1. μ λ€λ¦
π€ Generics
λ보기
- ν΄λμ€, μΈν°νμ΄μ€, λ©μλλ₯Ό μ μν λ ν΄λμ€, μΈν°νμ΄μ€μ νμ μ΄ λ§€κ°λ³μκ° λλλ‘ ν λ μ¬μ©
- ν΄λμ€λ λ©μλμ νΉμ λ°μ΄ν° νμ μ μΆνμ μ§μ ν μ μκ² ν΄μ£Όλ κ²
μ λ€λ¦ νμ
- 맀κ°λ³μνλ μ λ€λ¦ ν΄λμ€λ μΈν°νμ΄μ€
Type Parameter Naming Conventions
- νμ 맀κ°λ³μ μ΄λ¦ ⇒ μμμ λ¬Έμλ‘ μ§μ κ°λ₯
- ν κΈμμ λλ¬Έμλ‘ μ΄λ£¨μ΄μ Έ μλλ°, λ³μμ μΌλ° ν΄λμ€, μΈν°νμ΄μ€ λ±κ³Ό μ΄λ¦μ ꡬλ³νκΈ° μν¨
Type Parameter | Full name | Meaning |
E | Element | μμ |
K | Key | ν€ |
N | Number | λ²νΈ |
T | Type | μ ν |
V | Value | κ° |
μ λ€λ¦ μ₯μ
- μ»΄νμΌ μ νμ μ²΄ν¬ ⇒ νμ μμ μ± ν₯μ
- νμ 체ν¬μ νλ³νμ μλ΅ κ°λ₯ ⇒ μ½λ κ°κ²° ⇒ κ΄λ¦¬ μ©μ΄
- λΉμ·ν κΈ°λ₯ μ§μ μ μ½λ μ¬μ¬μ©μ± ν₯μ
πWrapper class (java.lang)
- κΈ°λ³Έ νμ λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ ν¬μ₯ν΄μ£Όλ(Wrapper) ν΄λμ€
πBoxing / Unboxing
- κ°μ μ°Έμ‘°νκΈ° μν΄ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ , μμ±λ μΈμ€ν΄μ€ κ°λ§ μ°Έμ‘° κ°λ₯
π€ Generic Class
λ보기
- μ λ€λ¦μ΄ μ¬μ©λ ν΄λμ€
μ λ€λ¦ ν΄λμ€ μ μΈ
- Tνμ μ μμ§ νμ μ΄ μ ν΄μ Έμμ§ μμΌλ―λ‘ μ§μ μ§μ ν΄μ£Όλ©΄ λ¨
class MusicalInsts<T> { // νμ
맀κ°λ³μ <T> μ μΈ
// class bodyμμ
private T guitar; // μμ νμ
μΌλ‘ T μ¬μ©
}
μ λ€λ¦ ν΄λμ€ μΈμ€ν΄μ€ν
Box<Integer> box = new Box<Integer>();
μ λ€λ¦ ν΄λμ€ μ μ μ μ£Όμν μ
- ν΄λμ€ λ³μμλ νμ 맀κ°λ³μ μ¬μ© λΆκ°
class MusicalInsts<T> {
private T guiter; // O
static T piano; // X
}
- ν΄λμ€ λ³μλ λͺ¨λ μΈμ€ν΄μ€κ° 곡μ νκΈ° λλ¬Έμ, ν΄λμ€ λ³μμ νμ 맀κ°λ³μ μ¬μ©μ΄ κ°λ₯νλ€λ©΄ ν΄λμ€ λ³μμ νμ μ΄ μΈμ€ν΄μ€λ³λ‘ λ¬λΌμ§ κ²μ
- MusicalInsts<String>μΌλ‘ λ§λ μΈμ€ν΄μ€μ MusicalInsts<Integer>λ‘ λ§λ μΈμ€ν΄μ€κ° 곡μ νλ ν΄λμ€ λ³μμ νμ μ΄ μλ‘ λ¬λΌμ§κ² λ¨ → ν΄λμ€ λ³μλ₯Ό ν΅ν΄ κ°μ λ³μλ₯Ό 곡μ νλ κ² μλκ² λ¨
- λ°λΌμ staticμ΄ λΆμ λ³μ/λ©μλμλ νμ 맀κ°λ³μ μ¬μ© λΆκ°
μ λ€λ¦ ν΄λμ€ μ¬μ©
- μ λ€λ¦ ν΄λμ€λ λ©€λ²λ₯Ό ꡬμ±νλ μ½λμ νΉμ ν νμ μ΄ μ§μ λμ§ μμμΌλ―λ‘, μ λ€λ¦ ν΄λμ€λ₯Ό μΈμ€ν΄μ€νν λμλ μλνκ³ μ νλ νμ μ μ§μ ν΄μ£Όμ΄μΌ ν¨
- λ¨, νμ
맀κ°λ³μμ μΉνλ νμ
μΌλ‘ κΈ°λ³Έ νμ
μ μ§μ ν μ μμ
int, doubleκ³Ό κ°μ μμ νμ μ μ§μ ν΄μΌ νλ κ²½μ°μλ Integer, Doubleκ³Ό κ°μ λνΌ ν΄λμ€λ₯Ό νμ©
Basket<String> basket1 = new Basket<String>("Hello");
Basket<Integer> basket2 = new Basket<Integer>(10);
Basket<Double> basket3 = new Basket<Double>(3.14);
- new Basket<…> λΆλΆμ ꡬ체μ μΈ νμ μλ΅ κ°λ₯ ⇒ μ°Έμ‘°λ³μ νμ μμ μ μΆ κ°λ₯
π€ Restrictions on Generics
λ보기
- μ λ€λ¦ νμ μ ‘extends’λ₯Ό μ¬μ© ⇒ νΉμ νμ μ μμλ€λ§ λμ ν μ μκ² μ ν κ°λ₯
- μ‘°μνμ μ μ°Έμ‘°λ³μλ‘ μμνμ μ κ°μ²΄λ₯Ό κ°λ¦¬ν¬ μ μλ κ²μ²λΌ, 맀κ°λ³μνλ νμ μ μμ νμ λ κ°λ₯
- μΈν°νμ΄μ€λ₯Ό ꡬνν λλ ‘extends’ μ¬μ© → ‘implements’ μλ
- ν΄λμ€μ μμ & μΈν°νμ΄μ€λ ꡬν ⇒ ‘&’ κΈ°νΈλ‘ μ°κ²°
class Example<T extends classname & interfacename> { ... }
π€ Generic Method
λ보기
- ν΄λμ€ λ΄λΆμ νΉμ λ©μλλ§ μ λ€λ¦μΌλ‘ μ μΈν κ²
- λ©μλ μ μΈλΆμ μ μ μ λ€λ¦μΌλ‘ λ¦¬ν΄ νμ , νλΌλ―Έν°μ νμ μ΄ μ ν΄μ§λ λ©μλ
public class MuslcalInsts<T> {
static T guitar;
}
π μ€λμ κ³΅λΆ - 2. 컬λ μ νλ μμν¬
π€ Collections Framework
λ보기
- Collection: μ¬λ¬ κ°μ²΄(λ°μ΄ν°)λ₯Ό λͺ¨μλμ κ²
- Framework: νμ€νλ νλ‘κ·Έλλ° λ°©μ
- Collection Framework
- λ°μ΄ν°λ₯Ό μ μ₯νλ ν΄λμ€λ€μ νμ€νν μ€κ³
- νλ‘κ·Έλ¨ κ΅¬νμ νμν μλ£κ΅¬μ‘°λ₯Ό ꡬνν΄λμ JDK λΌμ΄λΈλ¬λ¦¬
- λͺ¨λ μλ° μ»¬λ μ μ java.util ν¨ν€μ§μ ꡬν
- κ°λ°μ μμλλ μκ°μ μ μ½νλ©΄μ μ΅μ νλ μκ³ λ¦¬μ¦ μ¬μ© κ°λ₯
컬λ μ νλ μμν¬μ ꡬ쑰
π€ List
λ보기
- κ°μ²΄λ₯Ό μΌλ ¬λ‘ λμ΄λμ ꡬ쑰
- μ€λ³΅ κ° νμ© o, μ μ₯μμ μ μ§ o
- μΈλ±μ€λ‘ κ°μ²΄ κ΄λ¦¬ → κ°μ²΄ μ μ₯ μ μλ μΈλ±μ€ λΆμ¬ → μΈλ±μ€λ‘ κ°μ²΄ μ‘°μ(μΆκ°, μμ , κ²μ) κ°λ₯
ArrayList
- κΈ°μ‘΄ Vectorλ₯Ό κ°μ ν κ²μΌλ‘, Vectorλ³΄λ€ ArrayListλ₯Ό μ¬μ©
- Object λ°°μ΄μ μ΄μ© ⇒ λ°μ΄ν°μ μ μ₯μμ μ μ§, μ€λ³΅ νμ©
LinkedList
- λ°°μ΄μ λ¨μ μ 보μνκΈ° μν΄ κ³ μλ μλ£κ΅¬μ‘°
- λ°μ΄ν°μ ν¨μ¨μ μΈ μ‘°μ(μΆκ°, μμ , λ³κ²½) κ°λ₯
- λΆμ°μμ μΌλ‘ μ‘΄μ¬νλ λ°μ΄ν°λ₯Ό μλ‘ μ°κ²°ν ννλ‘ κ΅¬μ±
- λ°μ΄ν°μ
- μΆκ°: μΆκ°νλ €λ μμΉμ μ΄μ μμμ μ°Έμ‘°λ₯Ό μλ‘μ΄ μμμ λν μ°Έμ‘°λ‘ λ³κ²½ν΄μ£Όκ³ , μλ‘μ΄ μμκ° κ·Έ λ€μ μμλ₯Ό μ°Έμ‘°νλλ‘ λ³κ²½
- μμ : μμ νλ €λ μμμ μ΄μ μμκ° μμ νκ³ μ νλ μμμ λ€μ μμλ₯Ό μ°Έμ‘°νλλ‘ λ³κ²½
ArrayList π LinkedList
μ±λ₯ λΉκ΅ | ArrayList | LinkedList |
μμ°¨μ μΌλ‘ λ°μ΄ν°λ₯Ό μΆκ°/μμ | ππ» | |
λΉμμ°¨μ μΌλ‘ λ°μ΄ν°λ₯Ό μΆκ°/μμ | ππ» | |
μ κ·Ό μκ° | ππ» | |
κΈ°λ° | λ°°μ΄κΈ°λ° | μ°κ²°κΈ°λ° |
π€ Iterator
λ보기
- 컬λ μ
μ μ μ₯λ μμλ€μ μμ°¨μ μΌλ‘ μ½μ΄μ΄
- μν κΈ°λ₯: Iterator μΈν°νμ΄μ€μ μ μ
- Collection μΈν°νμ΄μ€μ μ μλ iterator()λ₯Ό νΈμΆνλ©΄ Iterator νμ
μ μΈμ€ν΄μ€κ° λ°νλ¨
⇒ Collection μΈν°νμ΄μ€λ₯Ό μμλ°λ Listμ Set μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ€μ iterator() λ©μλ μ¬μ© κ°λ₯
Iterator μΈν°νμ΄μ€μ μ μλ λ©μλ
- hasNext(): μ½μ΄μ¬ κ°μ²΄κ° μμΌλ©΄ true, μμΌλ©΄ false λ°ν
- next(): νλμ κ°μ²΄λ₯Ό μ½μ΄μ΄
- next() νΈμΆ μ hasNext()λ‘ μ½μ΄μ¬ μμκ° μλμ§ λ¨Όμ νμΈν΄μΌν¨
- remove(): next()λ‘ μ½μ΄μ¨ κ°μ²΄ μμ
- μμ: next() νΈμΆ → remove() νΈμΆ
π€ Set
λ보기
- μ μ₯ μμκ° μ μ§λμ§ μμΌλ©΄μ μ€λ³΅μ νμ©νμ§ μλ 컬λ μ ν΄λμ€λ₯Ό ꡬννλλ° μ¬μ©
HashSet
- Set μΈν°νμ΄μ€λ₯Ό ꡬνν λνμ μΈ μ»¬λ μ ν΄λμ€
- μ€λ³΅ κ° νμ© x, μ μ₯μμ μ μ§ x
TreeSet
- μ΄μ§νμνΈλ¦¬(Binary search Tree)λ‘ κ΅¬νλ 컬λ μ ν΄λμ€
- νλμ λΆλͺ¨ λ Έλκ° μ΅λ λ κ°μ μμ λ Έλμ μ°κ²° κ°λ₯
- λ²μ κ²μκ³Ό μ λ ¬μ νΉνλ μλ£κ΅¬μ‘°
class Node {
Object element; // κ°μ²΄μ μ£Όμκ°μ μ μ₯νλ μ°Έμ‘°λ³μ
Node left; // μΌμͺ½ λ
Έλμ μ£Όμκ°μ μ μ₯νλ μ°Έμ‘°λ³μ
Node right; // μ€λ₯Έμͺ½ λ
Έλμ μ£Όμκ°μ μ μ₯νλ μ°Έμ‘°λ³μ
}
π€ Map
λ보기
- μ μ₯μμκ° μ μ§λμ§ μμΌλ©΄μ ν€(key)μ κ°(value)μ νλμ μμΌλ‘ λ¬Άμ΄ μ μ₯νλ 컬λ μ
ν΄λμ€λ₯Ό ꡬννλλ° μ¬μ©
- ν€λ μ€λ³΅λ μ μμ§λ§, κ°μ μ€λ³΅μ νμ©
Hashtable
- HashMapμ μ΄μ λ²μ μΌλ‘, κ°λ₯νλ©΄ Hashtableλ³΄λ€ HashMapμ μ¬μ©
HashMap
- Map μΈν°νμ΄μ€λ₯Ό ꡬνν λνμ μΈ μ»¬λ μ ν΄λμ€
- HashMapμ ν€(key)μ κ°(value)
- ν΄μ±(hashing)κΈ°λ²μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ ⇒ λ°μ΄ν°κ° λ§μλ κ²μμ΄ λΉ λ¦
- λ°μ΄ν°λ₯Ό ν€μ κ° μμΌλ‘ μ μ₯
- ν€: 컬λ μ λ΄ ν€ μ€ μ μΌ
- κ°: λ°μ΄ν° μ€λ³΅ νμ©
- Mapμ ν€μ κ°μ μμΌλ‘ μ μ₯νκΈ° λλ¬Έμ iterator() μ§μ νΈμΆ λΆκ°
⇒ entrySet() / keySet() λ©μλλ₯Ό μ΄μ©ν΄ Set ννλ‘ λ°νλ 컬λ μ μ iterator()λ₯Ό νΈμΆνμ¬ λ°λ³΅μλ₯Ό λ§λ ν
λ°λ³΅μλ₯Ό ν΅ν΄ μν
β Ref.
https://docs.oracle.com/javase/tutorial/java/generics/index.html
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/package-summary.html
π μ€λμ μκ° μ‘°κ°λͺ¨μ
- μ€λμ μ€λ λ°°μ΄κ±° μ§μ΄λ£λλΌ μκ° μμ 무
'SEB > TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
018 | Java - Enum, Annotation, Lambda, Stream (0) | 2022.07.18 |
---|---|
017 | Java - π₯ Practical | Collection Framework (0) | 2022.07.16 |
015 | Java (0) | 2022.07.13 |
014 | Java - Polymorphism, Abstraction (0) | 2022.07.12 |
013 | Java - Inheritance, Encapsulation (2) | 2022.07.11 |
Comments