πŸ’» 곡뢀 (IT)/πŸ‘©πŸΌ‍πŸ’» κ°œλ…

[Java] μ»¬λ ‰μ…˜ (Collection)

zoo-it 2021. 3. 30. 23:24

 

  • μžλ°”μ—μ„œ μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬λž€ 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜λŠ” 클래슀
  • λ‹€μˆ˜μ˜ 데이터λ₯Ό 쉽고 효과적으둜 μ²˜λ¦¬ν•  수 μžˆλŠ” ν‘œμ€€ν™”λœ 방법을 μ œκ³΅ν•˜λŠ” 클래슀의 μ§‘ν•©
  • μ‰½κ²Œ λ§ν•˜λ©΄, μ—¬λŸ¬ μ›μ†Œλ“€μ„ 담을 수 μžˆλŠ” 자료ꡬ쑰 !
  • 정적 λ©”λͺ¨λ¦¬ 할당이 μ•„λ‹Œ 동적 λ©”λͺ¨λ¦¬ ν• λ‹ΉμœΌλ‘œ 곡간이 ν•„μš”ν•œλ§ŒνΌ μΆ”κ°€ν•  수 있음

 

[Java μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ˜ 상속 ꡬ쑰]

 

 

μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠ” 자료 ꡬ쑰에 따라 핡심이 λ˜λŠ” μ£Όμš” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•¨

 

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

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

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

 

이 μ€‘μ—μ„œ List와 Set μΈν„°νŽ˜μ΄μŠ€λŠ” λͺ¨λ‘ Collection μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†λ°›μ§€λ§Œ,

κ΅¬μ‘°μƒμ˜ 차이둜 인해 Map μΈν„°νŽ˜μ΄μŠ€λŠ” λ³„λ„λ‘œ μ •μ˜ν•¨

 

λ”°λΌμ„œ, List μΈν„°νŽ˜μ΄μŠ€μ™€ Set μΈν„°νŽ˜μ΄μŠ€μ˜ κ³΅ν†΅λœ 뢀뢄을 Collection μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ •μ˜ν•˜κ³  있음

 

[μ£Όμš” μΈν„°νŽ˜μ΄μŠ€μ˜ κ°„λ‹¨ν•œ νŠΉμ§•]

μΈν„°νŽ˜μ΄μŠ€ μ„€λͺ… κ΅¬ν˜„ν΄λž˜μŠ€
List<E> μˆœμ„œκ°€ μžˆλŠ” λ°μ΄ν„°μ˜ μ§‘ν•©
λ°μ΄ν„°μ˜ 쀑볡 ν—ˆμš©
Vector, ArrayList, LinkedList, Stack, Queue
Set<E> μˆœμ„œκ°€ μ—†λŠ” λ°μ΄ν„°μ˜ μ§‘ν•©
λ°μ΄ν„°μ˜ 쀑볡 ν—ˆμš© X
HashSet, TreeSet
Map<K, V> 킀와 κ°’μ˜ ν•œ 쌍으둜 μ΄λ£¨μ–΄μ§€λŠ” λ°μ΄ν„°μ˜ μ§‘ν•©
ν‚€λŠ” 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•Šμ§€λ§Œ, 값은 쀑볡을 ν—ˆμš©
μˆœμ„œκ°€ μ—†μŒ
HashMap, TreeMap, Hashtable, Properties

 

[각 μΈν„°νŽ˜μ΄μŠ€μ˜ νŠΉμ§•]

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

  • Vector : 과거에 λŒ€μš©λŸ‰ 처리λ₯Ό μœ„ν•΄ μ‚¬μš©ν–ˆμœΌλ©°, λ‚΄λΆ€μ—μ„œ μžλ™μœΌλ‘œ λ™κΈ°ν™”μ²˜λ¦¬κ°€ μΌμ–΄λ‚˜ 비ꡐ적 μ„±λŠ₯이 μ’‹μ§€ μ•ŠμŒ
  • ArrayList : 단방ν–₯ 포인터 ꡬ쑰둜 각 데이터에 λŒ€ν•œ 인덱슀λ₯Ό κ°€μ§€κ³  μžˆμ–΄ 쑰회 κΈ°λŠ₯에 μ„±λŠ₯이 뛰어남
  • LinkedList : μ–‘λ°©ν–₯ 포인터 ꡬ쑰둜 λ°μ΄ν„°μ˜ μ‚½μž…, μ‚­μ œκ°€ λΉˆλ²ˆν•  κ²½μš°μ— μœ μš©ν•¨

 

λ©”μ†Œλ“œ μ„€λͺ…
boolean add(E e) μ£Όμ–΄μ§„ 객체λ₯Ό 맨 끝에 μΆ”κ°€
void add(int index, E element) μ£Όμ–΄μ§„ μΈλ±μŠ€μ— 객체 μΆ”κ°€
set(int index, E element) μ£Όμ–΄μ§„ μΈλ±μŠ€μ— μ €μž₯된 객체λ₯Ό μ£Όμ–΄μ§„ 객체둜 λ³€κ²½
boolean contains(Object o) μ£Όμ–΄μ§„ 객체가 μžˆλŠ”μ§€μ— λŒ€ν•œ μ—¬λΆ€ 검색
E get(int index) μ£Όμ–΄μ§„ μΈλ±μŠ€μ— μ €μž₯된 객체 리턴
isEmpty() μ»¬λ ‰μ…˜μ΄ λΉ„μ–΄μžˆλŠ”μ§€ μ—¬λΆ€ 확인
int size() μ €μž₯λ˜μ–΄ μžˆλŠ” 전체 객체 수 리턴
E remove(int index) μ£Όμ–΄μ§„ μΈλ±μŠ€μ— μ €μž₯된 객체 μ‚­μ œ
void clear() μ£Όμ–΄μ§„ μΈλ±μŠ€μ— μ €μž₯된 객체 μ‚­μ œ
boolean remove(Object o) μ£Όμ–΄μ§„ 객체 μ‚­μ œ

 

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

  • HashSet : μ ‘κ·Ό 속도가 λΉ λ₯΄μ§€λ§Œ μˆœμ„œλ₯Ό μ˜ˆμΈ‘ν•  수 μ—†μŒ
  • TreeSet : μ •λ ¬ 방법을 μ§€μ •ν•  수 있음

 

λ©”μ†Œλ“œ μ„€λͺ…
boolean add(E e) μ£Όμ–΄μ§„ 객체λ₯Ό μ €μž₯ ν›„ 성곡적이면 true
쀑볡 객체면 false 리턴
boolean contains(Object o) μ£Όμ–΄μ§„ 객체의 μ €μž₯ μ—¬λΆ€ 리턴
Iterator<E> iterator() μ €μž₯된 객체λ₯Ό ν•œλ²ˆμ”© κ°€μ Έμ˜€λŠ” 반볡자 리턴
isEmpty() μ»¬λ ‰μ…˜μ΄ λΉ„μ–΄μžˆλŠ”μ§€ 쑰사
int Size() μ €μž₯λ˜μ–΄ μžˆλŠ” 전체 객체 수 리턴
void clear() μ €μž₯된 λͺ¨λ“  객체 μ‚­μ œ
boolean remove(Object o) μ£Όμ–΄μ§„ 객체 μ‚­μ œ

 

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

  • HashMap : 쀑볡과 μˆœμ„œκ°€ ν—ˆμš©λ˜μ§€ μ•ŠμœΌλ©° NULL 값이 올 수 있음
  • TreeMap : μ •λ ¬λœ μˆœμ„œλŒ€λ‘œ 킀와 값을 μ €μž₯ν•˜μ—¬ 검색 속도가 빠름
  • Hashtable : HashMapλ³΄λ‹€λŠ” λŠλ¦¬μ§€λ§Œ 동기화λ₯Ό μ§€μ›ν•˜λ©° NULL 값이 올 수 μ—†μŒ

 

λ©”μ†Œλ“œ μ„€λͺ…
V put(K Key, V value) μ£Όμ–΄μ§„ 킀와 값을 μΆ”κ°€ν•˜μ—¬ μ €μž₯되면 κ°’ 리턴
boolean containsKey(Object Key) μ£Όμ–΄μ§„ ν‚€κ°€ μžˆλŠ”μ§€ 확인
boolean containsValue(Object value) μ£Όμ–΄μ§„ 값이 μžˆλŠ”μ§€ 확인
Set<Map.Entry<K,V>> entrySet() λͺ¨λ“  Map.Entry 객체λ₯Ό Set에 λ‹΄μ•„ 리턴
Set<K> keySet() λͺ¨λ“  ν‚€λ₯Ό Set 객체에 λ‹΄μ•„ 리턴
V get(Object key) μ£Όμ–΄μ§„ 킀에 μžˆλŠ” κ°’ 리턴
boolean isEmpty() μ»¬λ ‰μ…˜μ΄ λΉ„μ–΄μžˆλŠ”μ§€ 쑰사
int Size() μ €μž₯λ˜μ–΄ μžˆλŠ” 전체 객체의 수 리턴
Collection<V> values() μ €μž₯된 λͺ¨λ“  값을 Collection에 λ‹΄μ•„μ„œ 리턴
void clear() μ €μž₯된 λͺ¨λ“  Map.Entry μ‚­μ œ
V remove(Object Key) μ£Όμ–΄μ§„ 킀와 μΌμΉ˜ν•˜λŠ” Map.Entryλ₯Ό μ‚­μ œν•˜κ³  κ°’ 리턴

 

 

'πŸ’» 곡뢀 (IT) > πŸ‘©πŸΌβ€πŸ’» κ°œλ…' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JavaScript] DOM, BOM  (1) 2022.05.30
[Java] Array와 ArrayList  (0) 2021.04.01
[Java] ν–₯μƒλœ FOR λ¬Έ  (0) 2021.03.29