μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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
- FilterChain
- μ λ€λ¦μ€
- 첫κΈμλλ¬Έμ
- λΆνΈμΊ ν
- 컬λ μ νλ μμν¬
- κ³μ°κΈ°λ§λ€κΈ°
- νμ΄νλ‘κ·Έλλ°
- java
- λ°±μλ
- testing
- μ€νλ§
- μΈν 리μ μ΄
- μλ°
- Spring Data JDBC
- νκ³
- fibonacci
- μλ£κ΅¬μ‘°
- Publishing
- 그리λ
- CSS
- λ¬Έμμ΄λ€μ§κΈ°
- CLIλͺ λ Ήμ΄
- μκ³ λ¦¬μ¦
- κΉνλΈ
- κ±°λμ κ³±
- HTML
- spring data jpa
- λ°±μ€μκ³ λ¦¬μ¦
- λ°μΌλ¦¬μ½λ©
- Spring Security
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
Lesson: Generics (Updated) (The Java™ Tutorials > Learning the Java Language)
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated
docs.oracle.com
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/package-summary.html
java.util (Java SE 11 & JDK 11 )
docs.oracle.com
π μ€λμ μκ° μ‘°κ°λͺ¨μ
- μ€λμ μ€λ λ°°μ΄κ±° μ§μ΄λ£λλΌ μκ° μμ 무
'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