Java

Collections Framework - ํ•ต์‹ฌ ์ธํ„ฐํŽ˜์ด์Šค

voider 2020. 9. 9. 10:43

๐Ÿ“š ์ž๋ฐ”์˜ ์ •์„์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

Collections Framework๋Š” ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

ํ•ต์‹ฌ ์ธํ„ฐํŽ˜์ด์Šค


์ƒ์†๊ณ„์ธต๋„
์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : http://dinfree.com/lecture/language/112_java_6.html

interface ํŠน์ง• ๊ตฌํ˜„ ํด๋ž˜์Šค
List ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ. ์ค‘๋ณต ํ—ˆ์šฉ ArrayList, LinkedList, Stack, Vector ๋“ฑ
Set ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ. ์ค‘๋ณต ์—†์Œ. HashSet, TreeSet
Map key, value ์Œ(pair)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ.
์ˆœ์„œ ์œ ์ง€ ์•ˆ ๋จ. key๋Š” ์ค‘๋ณต ์•ˆ ๋จ.
HashMap, TreeMap, Hashtable, Properties

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋“ค์€ List, Set, Map์ค‘ ํ•˜๋‚˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ์™ธ๋กœ Vector, Hashtable, Properties๋Š” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ด์ „๋ถ€ํ„ฐ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ช…๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค.

Collection Interface


Collection์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ถ”๊ฐ€ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

method ์„ค๋ช…
boolean add(Obejct o)
boolean addAll(Collection c)
์ง€์ •๋œ ๊ฐ์ฒดObject ๋˜๋Š” Collection์˜ ๊ฐ์ฒด๋ฅผ Collection์— ์ถ”๊ฐ€ํ•œ๋‹ค.
void clear() Collection์˜ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
boolean contains(Object o)
boolean containsAll(Collection c)
์ง€์ •๋œ Object ๋˜๋Š” Collection๊ฐ์ฒด๊ฐ€ Collection์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
boolean equals(Object o) ๋™์ผํ•œ Collection์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
int hashCode Collection์˜ hash code๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
boolean isEmpty() Collection์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
Iterator iterator() Collection์˜ Iterator๋ฅผ ์–ป์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
boolean remove(Object o) ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
boolean removeAll(Collection c) ์ง€์ •ํ•œ Collection์— ํฌํ•จ๋œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
int size() Collection์— ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(=length)
Object[] toArray() Collection์— ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด๋ฐฐ์—ดObject[]๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object[]toArray(Object[] a) ์ง€์ •ํ•œ ๋ฐฐ์—ดa์— Collection์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

List


List์ธํ„ฐํŽ˜์ด์Šค์˜ ํŠน์ง•

  • ์ค‘๋ณต ํ—ˆ์šฉ
  • ์ˆœ์„œ ์œ ์ง€
method ์„ค๋ช…
void add(int index, Object element)
boolean addAll(int index, Collection c)
์ง€์ •ํ•œ index์— ๊ฐ์ฒดelement ๋˜๋Š” ์ปฌ๋ ‰์…˜์— ํฌํ•จ๋œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
Object get(int intex) ์ง€์ •ํ•œ index์— ์žˆ๋Š” ๊ฐ์ฒด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
int indexOf(Object o) ์ง€์ •ํ•œ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
int lastIndexOf(Object o) ์ง€์ •ํ•œ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ListIterator listIterator()
ListIterator listIterator(int index)
List๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ListIterator๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object remove(int index) ์ง€์ •ํ•œ index์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ง€์šฐ๊ณ , ์‚ญ์ œํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object set(int index, Object element) ์ง€์ •ํ•œ index์— ๊ฐ์ฒดelement๋ฅผ ์ €์žฅํ•œ๋‹ค.
void sort(Comparator c) ์ง€์ •ํ•œ ๋น„๊ต์žcomparator๋กœ List๋ฅผ ์ •๋ ฌํ•œ๋‹ค.
List subList(int fromIndex, int toIndex) ์ง€์ •ํ•œ ๋ฒ”์œ„from~to์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Set


ํŠน์ง•

  • ์ค‘๋ณต ํ—ˆ์šฉ ํ•˜์ง€ ์•Š์Œ.
  • ์ˆœ์„œ ์œ ์ง€ ์•ˆ ๋จ

๊ตฌํ˜„ ํด๋ž˜์Šค๋กœ HashSet, TreeSet์ด ์žˆ์Œ. (์œ„ ๊ณ„์ธต๋„ ์ฐธ๊ณ )

Map


key์™€ value๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์œ„ ๊ทธ๋ฆผ ์ฐธ๊ณ 

  • key๋Š” ์ค‘๋ณต X, value๋Š” ์ค‘๋ณต O
method ์„ค๋ช…
void clear() Map์˜ ๋ชจ๋“  ๊ฐ์ฒด ์‚ญ์ œํ•œ๋‹ค.
boolean containsKey(Object key) ์ง€์ •ํ•œ key์™€ ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
boolean containsValue(Object value) ์ง€์ •ํ•œ value์™€ ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
Set entrySet() Map์— ์ €์žฅ๋œ key-value๋ฅผ Map.Entryํƒ€์ž… ๊ฐ์ฒด๋กœ ์ €์žฅํ•œ Set์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
boolean equals(Object o) ๋™์ผํ•œ Map์ธ์ง€ ๋น„๊ตํ•œ๋‹ค.
Object get(Object key) ์ง€์ •ํ•œ key๊ฐ์ฒด์— ๋Œ€์‘ํ•˜๋Š” value๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
int hashCode() ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object put(Object key, Object value) Map์— key-value๋ฅผ ์—ฐ๊ฒฐmappingํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
void putAll(Map t) ์ง€์ •ํ•œ Map์˜ ๋ชจ๋“  key-value์Œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
Object remove(Object key) ์ง€์ •ํ•œ key์™€ ์ผ์น˜ํ•˜๋Š” key-value๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
int size() Map์— ์ €์žฅ๋œ key-value์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Set keySet() Map์— ์ €์žฅ๋œ ๋ชจ๋“  key๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Collection values() Map์— ์ €์žฅ๋œ ๋ชจ๋“  value๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

values()์˜ ๋ฐ˜ํ™˜ํƒ€์ž…์€ Collection.
KeySet()์˜ ๋ฐ˜ํ™˜ํƒ€์ž…์€ Set.

์™œ?

key๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Set์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
ํ•˜์ง€๋งŒ value๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Set์œผ๋กœ ๋ฐ˜ํ™˜ํ–ˆ์„ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ value๋Š” Set์ด ์•„๋‹Œ Collectionํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Map.Entry


Map์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šคinner interface
Map์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” Map.Entry์ธํ„ฐํŽ˜์ด์Šค๋„ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

๋ฉ”์„œ๋“œ ์„ค๋ช…
boolean equals(Object o) ๋™์ผํ•œ Entry์ธ์ง€ ๋น„๊ตํ•œ๋‹ค.
Object getKey() Entry์˜ key๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object getValue() Entry์˜ value๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
int hashCode() Entry์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object setValue(Object value) Entry์˜ value๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•œ ๊ฐ์ฒด๋กœ ๋ฐ”๊พผ๋‹ค.

'Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

List  (0) 2020.09.09
Stack & Queue  (0) 2020.09.09
๋‚ด๋ถ€ ํด๋ž˜์Šคinner class  (0) 2020.09.09
์ถ”์ƒํด๋ž˜์Šค & ์ธํ„ฐํŽ˜์ด์Šค  (0) 2020.09.09
๋‹คํ˜•์„ฑPolymorphism  (0) 2020.09.06