๐Ÿ—จ๏ธ Backend/Java

[Java]์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์› (2) - ArrayList, LinkedList

Kyle99 2022. 11. 28. 10:36

ArrayList

ArrayList๋Š” ๊ธฐ์กด์˜ Vector๋ฅผ ๊ฐœ์„ ํ•œ ๊ฒƒ์œผ๋กœ ๊ตฌํ˜„์›๋ฆฌ์™€ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค.

ArrayList์™€ ๋‹ฌ๋ฆฌ Vector๋Š” ์ž์ฒด์ ์œผ๋กœ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด ์žˆ๋‹ค.

List์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ, ์ €์žฅ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณต๊ฐ„์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. (๋ฐฐ์—ด ๊ธฐ๋ฐ˜)

Vectorํด๋ž˜์Šค์˜ ์†Œ์Šค ์ฝ”๋“œ

Vectorํด๋ž˜์Šค์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฒด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ Object[]๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, ์ตœ๊ณ  ์กฐ์ƒ์ธ Objectํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋‹คํ˜•์„ฑ)


ArrayList์˜ ๋ฉ”์„œ๋“œ

     
์ƒ์„ฑ์ž ArrayList() ๊ธฐ๋ณธ ์ƒ์„ฑ์ž
ArrayList(Collection c) ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ Collection์„ ์ฃผ๋ฉด
ํ•ด๋‹น Collection์„ ์ €์žฅํ•˜๋Š” ArrayList๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
ArrayList(int initialCapacity) ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•œ๋‹ค.
์ถ”๊ฐ€ boolean add(Object o) ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. (์„ฑ๊ณตํ•˜๋ฉด true, ์‹คํŒจํ•˜๋ฉด false)
void add(int index, Object element) ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ถ”๊ฐ€ํ•œ๋‹ค.
boolean addAll(Collection c) ์ปฌ๋ ‰์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
boolean addAll(int index, Collection c) ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ถ”๊ฐ€ํ•œ๋‹ค.
์‚ญ์ œ boolean remove(Object o) ์ €์žฅํ•œ๊ฒƒ์„ ์‚ญ์ œํ•œ๋‹ค.
Object remove(int index) ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
boolean removeAll(Collection c) ํŠน์ • ์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
void clear() ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.


๊ฒ€์ƒ‰


int indexOf(Object o) ๋ช‡๋ฒˆ์งธ์— ๊ฐ์ฒด(o)๊ฐ€ ์ €์žฅ๋˜์—ˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค. (๋ชป์ฐพ์œผ๋ฉด -1 ๋ฐ˜ํ™˜)
์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ฐพ๋Š”๋‹ค.
int lastIndexOf(Object o) ๋ช‡๋ฒˆ์งธ์— ๊ฐ์ฒด(o)๊ฐ€ ์ €์žฅ๋˜์—ˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค. (๋ชป์ฐพ์œผ๋ฉด -1 ๋ฐ˜ํ™˜)
์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฐพ๋Š”๋‹ค.
boolean contains(Object o) ์ง€์ •๋œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
Object get(int index) ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ฝ๋Š”๋‹ค.
Object set(int index, Object element) ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.



๊ธฐํƒ€


List subList(int fromIndex, int toIndex) from~to๊นŒ์ง€์˜ ๊ฐ์ฒด๋ฅผ ๋ฝ‘์•„์„œ ์ƒˆ๋กœ์šด List๋ฅผ ๋งŒ๋“ ๋‹ค.
Object[] toArray() ArrayList์˜ ๊ฐ์ฒด๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object[] toArray(Object[] a)
boolean isEmpty() ArrayList๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
void trimToSize() ArrayList์˜ ๋นˆ๊ณต๊ฐ„์„ ์ œ๊ฑฐํ•œ๋‹ค.
int size() ArrayList์— ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ArrayList์— ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ์‚ญ์ œ๊ณผ์ •

ArrayList์— ์ €์žฅ๋œ ์„ธ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ(data [2])๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

โ‘  list.remove(2);๋ฅผ ํ˜ธ์ถœ ( index๊ฐ€ 2์ธ ๊ฐ์ฒด ์‚ญ์ œ )

โ‘ก ์‚ญ์ œํ•  ๋ฐ์ดํ„ฐ ์•„๋ž˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ์นธ์”ฉ ์œ„๋กœ ๋ณต์‚ฌํ•ด์„œ ์‚ญ์ œํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด์“ด๋‹ค.

โ‘ข ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ํ•œ ์นธ์”ฉ ์ด๋™ํ–ˆ์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋Š” null๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

โ‘ฃ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ค„์—ˆ์œผ๋ฏ€๋กœ size์˜ ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

 

๋งŒ์•ฝ data [4] ๋ฒˆ ์ธ๋ฑ์Šค์˜ 4๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด โ‘ก๋ฒˆ ๊ณผ์ •์ด ์ƒ๋žต๋˜๊ณ  โ‘ข, โ‘ฃ๋ฒˆ ๊ณผ์ •๋งŒ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ณผ์ • ํ•˜๋‚˜๊ฐ€ ์ƒ๋žต๋จ์œผ๋กœ ๋น ๋ฅด๊ณ  ํšจ์œจ์ด ์ข‹์•„์ง„๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๊ฐ€๋Šฅํ•œ โ‘ก๋ฒˆ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๋ฐ˜๋ณต๋ฌธ for๋ฌธ์„ ํ†ตํ•ด ArrayList์˜ ๊ฐ์ฒด๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ๋‹ค๋ฉด int i = list.size()๋กœ ํ•ด์•ผ ํ•œ๋‹ค.

ArrayList์— ์ €์žฅ๋œ ์ฒซ ๋ฒˆ์งธ ๊ฐ์ฒด๋ถ€ํ„ฐ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ (๋ฐฐ์—ด ๋ณต์‚ฌ ๋ฐœ์ƒ)

์ด๋ ‡๊ฒŒ i๊ฐ€ 0๋ถ€ํ„ฐ ์˜ฌ๋ผ๊ฐ€๋Š” for๋ฌธ์€ ์ธ๋ฑ์Šค๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๊ณ„์† ๋’ค์— ์ธ๋ฑ์Šค ๊ฐ’๋“ค์ด ๋ฎ์–ด์“ฐ๊ธฐ ๋•Œ๋ฌธ์— 1 ํ•˜๊ณ  3์ด ๋‚จ๊ฒŒ ๋œ๋‹ค.

ArrayList์— ์ €์žฅ๋œ ๋งˆ์ง€๋ง‰ ๊ฐ์ฒด๋ถ€ํ„ฐ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ (๋ฐฐ์—ด ๋ณต์‚ฌ ๋ฐœ์ƒ์•ˆํ•จ)

์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด int i = list.size()๋กœ ํ•ด์„œ ๋งˆ์ง€๋ง‰ ๊ฐ์ฒด๋ถ€ํ„ฐ ์‚ญ์ œ๋ฅผ ํ•˜๋ฉด ๋ฎ์–ด์“ฐ๋Š” ๊ณผ์ •์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—

๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


LinkedList

๋ฐฐ์—ด์˜ ์žฅ๋‹จ์ 

โ–ถ ์žฅ์  : ๋ฐฐ์—ด์€ ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(์ ‘๊ทผ์‹œ๊ฐ„, access time)์ด ์งง๋‹ค.

โ–ถ ๋‹จ์  1 : ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
   - ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด์•ผ ํ•œ๋‹ค.
   - ํฌ๊ธฐ ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ๋ถ„ํžˆ ํฐ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋œ๋‹ค.

โ–ถ ๋‹จ์  2 : ๋น„์ˆœ์ฐจ์ (์ค‘๊ฐ„์—)์ธ ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค.
   - ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.
   - ๊ทธ๋Ÿฌ๋‚˜ ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(๋์— ์ถ”๊ฐ€)์™€ ์‚ญ์ œ(๋๋ถ€ํ„ฐ ์‚ญ์ œ)๋Š” ๋น ๋ฅด๋‹ค.

๋ฐฐ์—ด์˜ ๋‹จ์ ์œผ๋กœ๋Š” ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ๊ณผ, ์ถ”๊ฐ€์™€ ์‚ญ์ œ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌํ•œ ๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด LinkedList์ด๋‹ค.

๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ถˆ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐ(link)ํ•œ๋‹ค.

๋ฐฐ์—ด์€ ๊ฐ ์š”์†Œ๊ฐ€ ์—ฐ์†์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค ๋ถ™์–ด์žˆ์–ด ๋ฐฐ์—ด์˜ ๋‹ค์Œ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ’๋“ค์ด ๋ถ™์–ด์žˆ์ง€ ์•Š๋‹ค. ๊ฐ€๊นŒ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์„์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ํ•˜๋‚˜ํ•˜๋‚˜๋งˆ๋‹ค ๋ถˆ์—ฐ์†์ ์ด๋‹ค. ๊ทธ๋Ÿฐ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋…ธ๋“œ(Node)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ ๋…ธ๋“œ๋“ค์€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜(next)์™€ ๊ฐ’(obj)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ฆ‰, ์ฃผ์†Œ๊ฐ€ ๋ถˆ์—ฐ์†์ ์ด๋ผ๋„ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ์„œ๋กœ ๋งํฌ๋˜์–ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋„ ๋‹จ ํ•œ ๋ฒˆ์˜ ์ฐธ์กฐ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 1๋ฒˆ → 2๋ฒˆ → 3๋ฒˆ ์ด๋ ‡๊ฒŒ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์„ ๋•Œ

2๋ฒˆ์„ ๋นผ๊ณ  ์‹ถ๋‹ค๋ฉด 1๋ฒˆ์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ๊ฐ€ 2๋ฒˆ์ด ์•„๋‹ˆ๋ผ 3๋ฒˆ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๋ฒˆ์˜ Node๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๋‘ ๋ฒˆ์˜ ์ฐธ์กฐ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ 0x350์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  0x500์˜ ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•˜๊ณ 

์ƒ์„ฑ๋œ 0x350์€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.


์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

ํ•˜์ง€๋งŒ, ๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ์ด๋Ÿฌํ•œ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์—๋„ ๋‹จ์ ์ด ์žˆ๋‹ค.

๋ฐฐ์—ด์€ ์—ฐ์†์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. ์„œ๋กœ์„œ๋กœ ์—ฐ์†๋˜์–ด ์žˆ์œผ๋‹ˆ ์ฐพ๋Š” ๊ฐ’์ด ์–ด๋”” ์žˆ์–ด๋„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ฉด์— ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” 1๋ฒˆ์ด 2๋ฒˆ์— ์—ฐ๊ฒฐ๋˜๊ณ  2๋ฒˆ์ด 3๋ฒˆ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋‹ˆ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„์„œ ๊ฐ€์•ผ ํ•œ๋‹ค.

์ฆ‰, ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋‘ ๋ฒˆ์งธ ์š”์†Œ์˜ ์œ„์น˜๋งŒ ์•Œ์ง€ ์„ธ ๋ฒˆ์งธ ์š”์†Œ์˜ ์œ„์น˜๋Š” ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(linked list) - ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ. ์ ‘๊ทผ์„ฑ์ด ๋‚˜์จ

๊ทธ๋ ‡๊ธฐ์— ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด ๋”๋ธ”๋ฆฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(dobly linked lsit)์ด๋‹ค.

๋”๋ธ”๋ฆฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(doubly linked list) - ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ

๋”๋ธ”๋ฆฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์•ž์˜ ๋…ธ๋“œ์™€ ๋’ค์˜ ๋…ธ๋“œ ๋ชจ๋‘ ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ์–ด์„œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ์ ‘๊ทผ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ์—ฌ์ „ํžˆ ํ•œ ๋ฒˆ์— ์ด๋™ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์•ž์˜ ๋…ธ๋“œ์™€ ๋’ค์˜ ๋…ธ๋“œ๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋”๋ธ”๋ฆฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์—์„œ ์กฐ๊ธˆ ๋” ๋ณด์™„ํ•œ ๊ฒƒ์ด ๋”๋ธ”๋ฆฌ ์จํ˜๋Ÿฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(doubly circular linked list)์ด๋‹ค.

๋”๋ธ”๋ฆฌ ์จํ˜๋Ÿฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(doubly circular linked list) - ์ด์ค‘ ์›ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

๋”๋ธ”๋ฆฌ ์จํ˜๋Ÿฌ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์ œ์ผ ๋ ๋…ธ๋“œ์™€ ์ œ์ผ ์ฒซ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ์„œ๋กœ ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ด ์ข‹๋‹ค.

์œ„ ์ด๋ฏธ์ง€์—์„œ 3๋ฒˆ ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ œ์ผ ๋์œผ๋กœ ์ด๋™ํ•ด ํ•œ๋ฒˆ๋งŒ ์ด๋™ํ•˜๋ฉด ๋˜๊ธฐ์— ํ›จ์”ฌ ์ˆ˜์›”ํ•ด์กŒ๋‹ค.


ArrayList์™€ LinkedList์˜ ์„ฑ๋Šฅ ๋น„๊ต

๋น„๊ต ๊ฒฐ๊ณผ (๋‹จ์œ„ = ms)

โ‘  ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ - ArrayList

โ‘ก ๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ - LinkedList

โ‘ข ์ ‘๊ทผ์‹œ๊ฐ„(access time) - ArrayList

๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๊ฐ€ n์ธ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ๊ตฌํ•  ๋•Œ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ + n * ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ํฌ๊ธฐ๋งŒ ๊ตฌํ•˜๋ฉด ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ฉด์— ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ด์–ด์„œ ๊ฐ€์•ผ ํ•˜๊ธฐ์— ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.