[Java] Collection

Ahnickยท2021๋…„ 2์›” 19์ผ
0
post-thumbnail
post-custom-banner

๋ณธ ํฌ์ŠคํŠธ๋Š” ์ž๋ฐ”์˜ ์‹  Vol.2 ์ด์ƒ๋ฏผ ์ €์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค
๋” ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ๊นŠ์ด ์žˆ๋Š” ๋‚ด์šฉ์€ ์ฑ…์— ์žˆ์Šต๋‹ˆ๋‹ค.

Java Collection

์ž๋ฐ”๋Š” ๊ฐœ๋ฐœ์ž ํŽธ์˜๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋†“์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Collection์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ •๋ณด๋ฅผ '์—ฌ๋Ÿฌ ๊ฐœ'๋‹ด์„ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ
์ด ์ž๋ฐ”์˜ Collection ๋˜๋Š” Map์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์˜ Collection, ๊ทธ๋ฆฌ๊ณ  Map์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Set, List, Queue๊ฐ€ Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์•„๋ž˜์—
์—ฌ๋Ÿฌ ๊ตฌํ˜„ ํด๋ž˜์Šค๋“ค์ด ์กด์žฌํ•˜๋ฉฐ

Map์€ Collection๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ HashMap, TreeMap๋“ฑ์ด Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ
๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋ชจ๋“  ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Collection

Iterator

Collection์€, Iterable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ
Collection์„ ๊ตฌํ˜„ํ•œ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Iterable์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๋ฐ
Iterable ์ธํ„ฐํŽ˜์ด์Šค๋Š” Iterator๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ

๋”ฐ๋ผ์„œ ๋ชจ๋“  Collection ๊ตฌํ˜„์ฒด๋“ค์€ Iterator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ
์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Iterator์˜ ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
booleanadd(E e)์š”์†Œ ์ถ”๊ฐ€
booleanaddAll(Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค
voidclear()์ปฌ๋ ‰์…˜์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
booleancontains(Object)ํ•ด๋‹น Object๊ฐ€ ์ปฌ๋ ‰์…˜์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์กด์žฌํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
booleancontainsAll(Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ์ปฌ๋ ‰์…˜์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ ํ•ด๋‹น ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค
booleanequals(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ Object๊ฐ€ ๋™์ผํ•œ Object์ธ์ง€ ํ™•์ธํ•œ๋‹ค
inthashCode()์ปฌ๋ ‰์…˜์˜ ํ•ด์‹œ์ฝ”๋“œ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค
booleanisEmpty()์ปฌ๋ ‰์…˜์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค
Iteratoriterator()๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Iterator ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
booleanremove(Object)ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค
booleanremoveAll(Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ์ฝœ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋‹น ์ปฌ๋ ‰์…˜์—์„œ ์‚ญ์ œํ•œ๋‹ค
booleanretainAll(Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ์ฝœ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ํ•ด๋‹น ์ปฌ๋ ‰์…˜์— ๋‚จ๊ฒจ๋‘”๋‹ค
intsize()์ปฌ๋ ‰์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
Object[ ]toArray()์ปฌ๋ ‰์…˜์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•œ๋‹ค
< T > T[ ]toArray(T[ ])์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ง€์ •ํ•œ ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•œ๋‹ค

ArrayList

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Vector ํด๋ž˜์Šค์™€ ๊ทธ ์‚ฌ์šฉ๋ฒ• ๋ฐ ๊ตฌ์กฐ๊ฐ€
๊ฑฐ์˜ ๋น„์Šทํ•˜๋ฉฐ, Vector์™€์˜ ์ฐจ์ด๋Š” Thread Safe์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. Vector๋Š” Thread Safeํ•˜์ง€๋งŒ
ArrayList๋Š” Thread Safeํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ArrayList๊ฐ€ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

ArrayList๋Š” ์ด 6๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ArrayList๊ฐ€ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š”
๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์šฉ๋„
Serializable์›๊ฒฉ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜, ํŒŒ์ผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ์„ ์ง€์ •
CloneableObject Class์˜ clone()๋ฉ”์†Œ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Œ์„ ์ง€์ •ํ•œ๋‹ค. ์ฆ‰ ๋ณต์‚ฌ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์ž„์„ ์˜๋ฏธ
Iterable< E >๊ฐ์ฒด๊ฐ€ "foreach"๋ฌธ์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
Collection < E >์ฝœ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
List< E >๋ชฉ๋กํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ ์ง€์ •
RandomAccess๋ชฉ๋กํ˜• ๋ฐ์ดํ„ฐ์— ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก random ์ ‘๊ทผํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์šฉ๋จ

ArrayList์˜ ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž์„ค๋ช…
ArrayList()๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์ด 10๊ฐœ์ธ ArrayList๋ฅผ ๋งŒ๋“ ๋‹ค
ArrayList(Collection< ? extends E > c )ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ArrayList๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
ArrayList(int initialCapacity)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐœ์ˆ˜๋งŒํผ์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋Š” ArrayList๋ฅผ ์ƒ์„ฑํ•œ๋‹ค

ArrayList์˜ ๋ฉ”์†Œ๋“œ

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
booleanadd(E e)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋์— ๋‹ด๋Š”๋‹ค
voidadd(int index, E e)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •๋œ index์œ„์น˜์— ๋‹ด๋Š”๋‹ค, ํ•œ ์นธ์”ฉ ๋ฐ€์–ด๋‚ด๊ธฐ
booleanaddAll(Collection< ? extends E > c)๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰๋ถ€ํ„ฐ ๋‹ด๋Š”๋‹ค
booleanaddAll(int index, Collection< ? extends E > c)๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •๋œ index๋ถ€ํ„ฐ ๋‹ด๋Š”๋‹ค
intsize()ArrayList ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
Eget(int index)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ง€์ •ํ•œ ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
intindexOf(Object o)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด์™€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
intlastIndexOf(Object o)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด์™€ ๋™์ผํ•œ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
Object[ ]toArray()ArrayList์— ์กด์žฌํ•˜๋Š” ๊ฐ’๋“ค์„ Object[ ] ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ์ƒ์„ฑํ•œ๋‹ค
< T > T[ ]toArray(T[ ] a)ArrayList ๊ฐ์ฒด์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ Tํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค
voidclear()ArrayList ๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค
Eremove(int index)ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์ง€์ •ํ•œ ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
booleanremove(Object o)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด์™€ ๋™์ผํ•œ '์ฒซ ๋ฒˆ์งธ'๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค
booleanremoveAll(Collection< ? > c )ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
Eset(int index, E element)์ง€์ •ํ•œ ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ element๋กœ ๋Œ€์ฒดํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค

Stack

List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ArrayList, LinkedList๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
LIFO(Last in First Out)์„ ๊ตฌํ˜„ํ•œ ๋ฆฌ์ŠคํŠธ์ธ Stack์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ LIFO ๊ตฌํ˜„์„ ์œ„ํ•œ๋‹ค๋ฉด ArrayDeque๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayDeque๋Š” Stack๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ Thread Safeํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ Thread Safeํ•œ LIFO ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด Stack์„, Thread Safe๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด
ArrayDeque๋ฅผ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค
.

Stack์˜ ๋ฉ”์†Œ๋“œ

Stack์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Collection, List, Vector๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์—
์กด์žฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด ๋ฉ”์†Œ๋“œ๋“ค์„ ๋ชจ๋‘ ๊ตฌํ˜„๋ฐ›์œผ๋ฉด
LIFO ์›์น™์— ์–ด๊ธ‹๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ์ง€๋งŒ, ์ž๋ฐ”์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ ์œ„ํ•˜์—ฌ ์ด ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
booleanempty()๊ฐ์ฒด๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค
Epeek()๊ฐ์ฒด์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
Epop()๊ฐ์ฒด์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๊ณ  ๋ฆฌํ„ดํ•œ๋‹ค
Epush(E item)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ item์„ ๊ฐ€์žฅ ์œ„์— ์ €์žฅํ•œ๋‹ค
intsearch(Object o)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค

Set

Set์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Set ์ปฌ๋ ‰์…˜์€ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Set์€ ์ˆœ์„œ์— ๊ด€๊ณ„ ์—†์ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์ง ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ 
์›ํ•˜๋Š” ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€๋งŒ ๊ฒ€์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ๋ฆฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

Set์„ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜์˜ ๋‹จ์ˆœํ•œ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • HashSet : ์ˆœ์„œ๊ฐ€ ์ „ํ˜€ ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Set ์ค‘์— ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • TreeSet : ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์— ๋”ฐ๋ผ์„œ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. Red-Black Tree ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ HashSet๋ณด๋‹ค
    ์•ฝ๊ฐ„ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
  • LinkedHashSet : ์—ฐ๊ฒฐ๋œ ๋ชฉ๋ก ํƒ€์ž…์œผ๋กœ ๊ตฌํ˜„๋œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ
    ๊ฐ’์ด ์ •๋ ฌ๋˜๋ฉฐ ์ด์™€ ๊ฐ™์€ ํŠน์ง•์œผ๋กœ ์…‹ ์ค‘์— ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด Set์„ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด๋“ค ์‚ฌ์ด์— ์„ฑ๋Šฅ์„ ๋‚˜๋ˆ„๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ์ •๋ ฌ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
๋‹จ์ˆœํžˆ ์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ์—๋Š” ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋Š๊ปด์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช‡ ์ฒœ๊ฑด, ๋ช‡ ๋งŒ๊ฑด์˜
๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋‹ค ๋ณด๋ฉด ์ด ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๊ฐ€์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Set์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๊ฐ€
๊ฐ™์€์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์€ Set์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashSet

HashSet ๊ตฌํ˜„ ์ธํ„ฐํŽ˜์ด์Šค

HashSet์€ ์œ„์˜ ArrayList์™€ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฅธ๋ฐ, ๋‚˜๋จธ์ง€๋Š” ๋™์ผํ•˜์ง€๋งŒ
HashSet์€ List์™€ RandomAccess๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  Set< E > ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ
๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

Set ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜์— ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ๋“ค์ด ํฌํ•จ๋˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„
๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

HashSet์˜ ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž์„ค๋ช…
HashSet()๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” 16๊ฐœ์˜ ๊ณต๊ฐ„๊ณผ 0.75์˜ loadFactor๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
HashSet(Collection< ? extends E > c)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด์˜จ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ HashSet์— ๋‹ด์Šต๋‹ˆ๋‹ค.
HashSet(int initialCapacity)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด์˜จ ๊ฐ’ ๋งŒํผ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„๊ณผ 0.75์˜ ๋กœ๋“œํŒฉํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
HashSet(int initalCapacity, float loadFactor)์œ„์˜ ์ƒ์„ฑ์ž์—์„œ ๋กœ๋“œํŒฉํ„ฐ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

loadFactor
๋กœ๋“œํŒฉํ„ฐ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ / ์ €์žฅ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋“œํŒฉํ„ฐ๊ฐ’๋ณด๋‹ค ์ ์žฌ์œจ์ด ์ปค์ง€๋ฉด ํ•ด์‹œ ์žฌ์ •๋ฆฌ
์ž‘์—…(rehash)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค ์ด ์ž‘์—…์€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์นฉ๋‹ˆ๋‹ค.

HashSet์˜ ๋ฉ”์†Œ๋“œ

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
booleanadd(E e)๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
voidclear()๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
Objectclone()HashSet ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜์ง€๋งŒ, ๋‹ด๊ฒจ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
booleancontains(Object o)์ง€์ •ํ•œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค
booleanisEmpty()๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
Iterator< E >iterator()๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๊ธฐ ์œ„ํ•œ Iterator ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
booleanremove(Object o)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค
intsize()๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

TreeSet, LinkedHashSet

TreeSet, LinkedHashSet์€ ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์œผ๋กœ๋งŒ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
TreeSet์€ add์˜ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด '1-9', 'a-z'์™€ ๊ฐ™์€ ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์„ ํ•ด
๊ฐ€์ง€๊ณ  ์žˆ๋Š” Set์„ ๋œปํ•˜๋ฉฐ

LinkedHashSet์€ ๋“ค์–ด์˜จ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋งˆ์น˜ ArrayList์™€ ๊ฐ™์€
Set์ž…๋‹ˆ๋‹ค.

Set์˜ ์„ฑ๋Šฅ์€ ์œ„์—๋„ ๋งํ–ˆ๋“ฏ์ด HashSet > TreeSet > LinkedHashSet ์ž…๋‹ˆ๋‹ค.

Queue

LinkedList

LinkedList๋Š”, ํŠน์ดํ•˜๊ฒŒ List์™€ Queue๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด์ž…๋‹ˆ๋‹ค. LinkedList๋Š”
๋ฐ์ดํ„ฐ๊ฐ„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ ์ด์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋Š”
๋ฐฐ์—ด ๋˜๋Š” ArrayList, Vector๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ ์ด์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์‚ญ์ œ ๋˜๋Š” ์‚ฝ์ž…์—์„œ ๊ทธ ๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ๊ด€๊ณ„๋งŒ ์กฐ์ •ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—
LinkedList๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ๋Š” ๋” ์ด์ ์„ ๊ฐ€์ง„๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

LinkedList๋Š” Queue, Deque๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ LinkedList๋ฅผ ๊ฐ€์ง€๊ณ 
ํ•ด๋‹น ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ฉ”์†Œ๋“œ๋“ค๋„ ๊ฐ™์ด ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

LinkedList๊ฐ€ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

LinkedList๋Š” ArrayList์™€ ๋‹ฌ๋ฆฌ RandomAccess๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€์‹ 
Deque< E >, Queue< E > ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

Deque๋Š” ๋งจ ์•ž๊ณผ ๋งจ ๋’ค์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ณ 
Queue๋Š” FIFO(First-In First-Out)์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด์ž…๋‹ˆ๋‹ค.

LinkedList์˜ ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž์„ค๋ช…
LinkedList()๋น„์–ด ์žˆ๋Š” LinkedList ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
LinkedList(Collection< ? extends E > c)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ LinkedList์— ๋‹ด์Šต๋‹ˆ๋‹ค

LinkedList์˜ ๋ฉ”์†Œ๋“œ

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
voidaddFirst(Object)LinkedList ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ์•ž์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
booleanofferFirst(Object)" "
voidpush(Object)" "
booleanadd(Object)LinkedList ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ๋’ค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
voidaddLast(Object)" "
booleanoffer(Object)" "
booleanofferLast(Object)" "
voidadd(int Object)LinkedList ๊ฐ์ฒด์˜ ํŠน์ • ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
Objectset(int, Object)LinkedList ๊ฐ์ฒด์˜ ํŠน์ • ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฒดํ•˜๊ณ  ์›๋ž˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
booleanaddAll(Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
booleanaddAll(int, Collection)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์ธ๋ฑ์Šค ์œ„์น˜๋ถ€ํ„ฐ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
ObjectgetFirst()LinkedList ๊ฐ์ฒด์˜ ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
ObjectpeekFirst()" "
Objectpeek()" "
Objectelement()" "
ObjectgetLast()LinkedList ๊ฐ์ฒด์˜ ๋งจ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
ObjectpeekLast()" "
Objectget(int)LinkedList ๊ฐ์ฒด์˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
booleancontains(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค
intindexOf(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด -1์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
intlastIndexOf(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋์—์„œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์—†๋Š” ๊ฒฝ์šฐ -1์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
Objectremove()LinkedList ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
ObjectremoveFirst()" "
Objectpoll()" "
ObjectpollFirst()" "
Objectpop()" "
ObjectpollLast()LinkedList ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ๋์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
ObjectremoveLast()" "
Objectremove(int)ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
booleanremove(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์ค‘ ์•ž์—์„œ๋ถ€ํ„ฐ ์ƒ‰์ธํ•˜์—ฌ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค
booleanremoveFirstOccurrence(Object)" "
booleanremoveLastOccurrenct(Object)ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ ์ค‘ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ƒ‰์ธํ•˜์—ฌ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค

LinkedList๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”
๋ฉ”์†Œ๋“œ๋“ค์„ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€