🏁 기타/μ½”λ“œν”„λ ˆμ†Œ μ²΄ν—˜λ‹¨_BE

[Java] μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ™€ μ œλ„€λ¦­

Dhey 2022. 1. 21. 13:15
λ°˜μ‘ν˜•
μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬
(Collection framework)

λ‹€μ–‘ν•œ 자료ꡬ쑰의 κ΅¬ν˜„μ„ μœ„ν•œ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ μ§‘ν•©

 

≫ μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ ν΄λž˜μŠ€μ™€ Array의 차이점

1. ArrayλŠ” μ •μ˜ν•  λ•Œ λ°μ΄ν„°μ˜ 개수λ₯Ό μ •ν•˜μ—¬ 변경이 λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ,

   μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ ν΄λž˜μŠ€λŠ” 데이터 개수의 동적인 변경이 κ°€λŠ₯ν•˜λ‹€.

 

2. ArrayλŠ” Objectλ‚˜ int, charν˜• λ“±μ˜ Primitive Type을 μ›μ†Œλ‘œ κ°€μ§ˆ 수 μžˆμ§€λ§Œ,

   μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ ν΄λž˜μŠ€λŠ” κ°μ²΄λ§Œμ„ μ›μ†Œλ‘œ κ°€μ§„λ‹€.

 

μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ˜ μ£Όμš” μΈν„°νŽ˜μ΄μŠ€

   1. List μΈν„°νŽ˜μ΄μŠ€

   2. Set μΈν„°νŽ˜μ΄μŠ€

   3. Map μΈν„°νŽ˜μ΄μŠ€

  (* List와 Set μΈν„°νŽ˜μ΄μŠ€λŠ” λͺ¨λ‘ Collection μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속받아 μ •μ˜ν•˜μ§€λ§Œ,

      Map μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬μ‘°μƒμ˜ 차이둜 Colleciton μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속받지 μ•Šκ³  λ…μžμ μœΌλ‘œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜κ²Œ λœλ‹€)

List와 Set μΈν„°νŽ˜μ΄μŠ€λŠ” Collection μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속받고, Collection μΈν„°νŽ˜μ΄μŠ€λŠ” Iterable μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속 λ°›μŒ / Map μΈν„°νŽ˜μ΄μŠ€λŠ” λ…λ¦½μ μœΌλ‘œ μ •μ˜ 됨

 

 

μ£Όμš” μΈν„°νŽ˜μ΄μŠ€μ˜ νŠΉμ§•

β–Ά java.util.List<E> μΈν„°νŽ˜μ΄μŠ€

μˆœμ„œκ°€ μžˆλŠ” λ°μ΄ν„°μ˜ 집합이고, λ°μ΄ν„°λ“€μ˜ 쀑볡을 ν—ˆμš©ν•œλ‹€.

 

β–Ά java.util.Set<E> μΈν„°νŽ˜μ΄μŠ€

→ μˆœμ„œκ°€ μ—†λŠ” λ°μ΄ν„°μ˜ 집합이고, λ°μ΄ν„°λ“€μ˜ μ€‘볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

β–Ά java.util.Map<K,V> μΈν„°νŽ˜μ΄μŠ€

Key와 Value둜 이루어진 μŒμ„ μ΄λ£¨λŠ” λ°μ΄ν„°μ˜ 집합이닀. 데이터듀(속성)κ°„μ˜ μˆœμ„œκ°€ μ—†κ³ ,

Key μžμ²΄λŠ” 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•Šμ§€λ§Œ, Key에 mappingλ˜μ–΄μžˆλŠ” Valueλ“€ κ°„μ—λŠ” 쀑볡을 ν—ˆμš©ν•œλ‹€.

 

 

 


 

μ œλ„€λ¦­
(Generic)

λ°μ΄ν„°μ˜ νƒ€μž…μ„ μΌλ°˜ν™”ν•œλ‹€λŠ” 것을 의미

 

μ œλ„€λ¦­μ„ μ‚¬μš©ν•œ 클래슀 μ •μ˜
μ ‘κ·Όμ œμ–΄μž class ClassName<T> { }

 - <T> :

      · 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ  μž„μ˜μ˜ 데이터 νƒ€μž…μ„ 'T'λΌλŠ” type variable둜 μ§€μ •ν•˜κ² λ‹€λŠ” 의미

         ('T'λŠ” 'Type'의 μ•½μ–΄λ‘œ κ΄€ν–‰μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 이름)

      · type variable 'T' λ₯Ό μ΄μš©ν•΄ 클래슀 λ‚΄λΆ€ λ³€μˆ˜ 생성 및 λ©”μ„œλ“œμ˜ 인자, λ°˜ν™˜ κ°’μ˜ νƒ€μž…μ§€μ •μ΄ κ°€λŠ₯ν•˜κ³ , 'T'λŠ” μž„μ˜κ°’μœΌλ‘œ 지정이 κ°€λŠ₯ν•˜λ‹€.

μ œλ„€λ¦­μ„ μ‚¬μš©ν•œ λ°μ΄ν„°νƒ€μž…μ˜ ν™œμš©

 

 

μ œλ„€λ¦­μ„ μ‚¬μš©ν•œ 클래슀 객체 생성
ClassName<Type-Class> object-name = new ClassName< >();

  - ClassName : μƒμ„±ν•˜κ³ μž ν•˜λŠ” Classλ₯Ό μ§€μ •

  - <Type-Class> :

      · 클래슀 μ •μ˜ μ‹œ μ§€μ •ν•œ type variable에 μ‚¬μš©ν•  μ‹€μ œ 데이터 μœ ν˜• Class

      · Primitive Type λ°μ΄ν„°μ˜ 경우 Wrapper Class λ₯Ό μ‚¬μš©ν•œλ‹€.

       ( int → Integer,  double → Double,  float → Float,  etc···)

  - object-name : 객체의 λ³€μˆ˜ λͺ… μ§€μ • 

MyGeneric 클래슀λ₯Ό 객체둜 μƒμ„±ν•˜λ˜, Integer νƒ€μž…μ˜ λ³€μˆ˜λ“€μ„ μ‚¬μš©ν•˜μ—¬ μƒμ„±ν•˜λΌλŠ” 의미

 

 

μ œλ„€λ¦­μ˜ μž₯점

≫  맀개 λ³€μˆ˜μ˜ λ²”μš©μ„±(generality)을 확보할 수 μžˆλ‹€.

  (클래슀 λ‚΄ μž„μ˜μ˜ λ³€μˆ˜λ₯Ό 맀번 λ‹€λ₯Έ 데이터 νƒ€μž…μœΌλ‘œ μ§€μ •ν•˜μ—¬ 객체 생성이 κ°€λŠ₯해짐)

Integer, String λ“± μ›ν•˜λŠ” νƒ€μž…μœΌλ‘œ μ§€μ •ν•˜μ—¬ 객체 생성

≫ μ»΄νŒŒμΌ μ‹œ type check둜 μΈν•œ λŸ°νƒ€μž„ μ•ˆμ •μ„±μ„ 확보할 수 μžˆλ‹€.

String은 Integerκ°€ 될 수 μ—†λ‹€λŠ” Error λ©”μ„Έμ§€λ‘œ μ•Œλ €μ€Œ

≫ νƒ€μž… λ³€ν™˜ 및 νƒ€μž… 검사에 λ“€μ–΄κ°€λŠ” λ…Έλ ₯을 쀄일 수 μžˆλ‹€.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

μ½”λ“œν”„λ ˆμ†Œ Java μ›Ή 개발 μ²΄ν—˜λ‹¨ ν™œλ™ 쀑 'Java ν”„λ‘œκ·Έλž˜λ° μ΄ˆκΈ‰' μ΄λŸ¬λ‹ κ°•μ˜λ₯Ό λ“£κ³  μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :)
μ½”λ“œν”„λ ˆμ†Œ URL: https://www.codepresso.kr/

 

프리미엄 IT ꡐ윑 μ„œλΉ„μŠ€ - μ½”λ“œν”„λ ˆμ†Œ

 

www.codepresso.kr

λ°˜μ‘ν˜•