ArrayList
ArrayList๋ ๊ธฐ์กด์ Vector๋ฅผ ๊ฐ์ ํ ๊ฒ์ผ๋ก ๊ตฌํ์๋ฆฌ์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋์ผํ๋ค.
ArrayList์ ๋ฌ๋ฆฌ Vector๋ ์์ฒด์ ์ผ๋ก ๋๊ธฐํ ์ฒ๋ฆฌ๊ฐ ๋์ด ์๋ค.
List์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฏ๋ก, ์ ์ฅ์์๊ฐ ์ ์ง๋๊ณ ์ค๋ณต์ ํ์ฉํ๋ค.
๋ฐ์ดํฐ์ ์ ์ฅ๊ณต๊ฐ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค. (๋ฐฐ์ด ๊ธฐ๋ฐ)
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()๋ก ํด์ผ ํ๋ค.
์ด๋ ๊ฒ i๊ฐ 0๋ถํฐ ์ฌ๋ผ๊ฐ๋ for๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ์ญ์ ๋๋ฉด ๊ณ์ ๋ค์ ์ธ๋ฑ์ค ๊ฐ๋ค์ด ๋ฎ์ด์ฐ๊ธฐ ๋๋ฌธ์ 1 ํ๊ณ 3์ด ๋จ๊ฒ ๋๋ค.
์ ์ฝ๋์ ๊ฐ์ด 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๋ฒ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ ํ๋ํ๋ ์ฐพ์์ ๊ฐ์ผ ํ๋ค.
์ฆ, ์ฒซ ๋ฒ์งธ ์์๋ ๋ ๋ฒ์งธ ์์์ ์์น๋ง ์์ง ์ธ ๋ฒ์งธ ์์์ ์์น๋ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ ๊ธฐ์ ์ด๋ฌํ ๋จ์ ์ ๋ณด์ํ ๊ฒ์ด ๋๋ธ๋ฆฌ ๋งํฌ๋ ๋ฆฌ์คํธ(dobly linked lsit)์ด๋ค.
๋๋ธ๋ฆฌ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์์ ๋ ธ๋์ ๋ค์ ๋ ธ๋ ๋ชจ๋ ์ฐ๊ฒฐ์ด ๋์ด์์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋นํด ์ ๊ทผ์ฑ์ด ํฅ์๋์๋ค.
๊ทธ๋ ์ง๋ง ์ฌ์ ํ ํ ๋ฒ์ ์ด๋ํ ์๋ ์๋ค. ์์ ๋ ธ๋์ ๋ค์ ๋ ธ๋๋ง ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ ๊ฒ ๋๋ธ๋ฆฌ ๋งํฌ๋ ๋ฆฌ์คํธ์์ ์กฐ๊ธ ๋ ๋ณด์ํ ๊ฒ์ด ๋๋ธ๋ฆฌ ์จํ๋ฌ ๋งํฌ๋ ๋ฆฌ์คํธ(doubly circular linked list)์ด๋ค.
๋๋ธ๋ฆฌ ์จํ๋ฌ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ ์ผ ๋ ๋ ธ๋์ ์ ์ผ ์ฒซ ๋ ธ๋๊ฐ ์๋ก์๋ก ์ฐ๊ฒฐ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ ํจ์จ์ด ์ข๋ค.
์ ์ด๋ฏธ์ง์์ 3๋ฒ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ ์ผ ๋์ผ๋ก ์ด๋ํด ํ๋ฒ๋ง ์ด๋ํ๋ฉด ๋๊ธฐ์ ํจ์ฌ ์์ํด์ก๋ค.
ArrayList์ LinkedList์ ์ฑ๋ฅ ๋น๊ต
โ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ญ์ - ArrayList
โก ๋น์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ญ์ - LinkedList
โข ์ ๊ทผ์๊ฐ(access time) - ArrayList
๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ n์ธ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ๊ตฌํ ๋ ๋ฐฐ์ด์ ์ฃผ์ + n * ๋ฐ์ดํฐ ํ์ ์ ํฌ๊ธฐ๋ง ๊ตฌํ๋ฉด ๋ฐ๋ก ์ ์ ์๋ค.
๋ฐ๋ฉด์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ ธ๋๋ฅผ ํ๋ํ๋ ์ด์ด์ ๊ฐ์ผ ํ๊ธฐ์ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
'๐จ๏ธ Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java]์ปฌ๋ ์ ํ๋ ์์ (4) - ์ปฌ๋ ์ ์ ๊ทผ ์ธํฐํ์ด์ค, Arrays, Comparator์ Comparable (0) | 2022.12.05 |
---|---|
[Java]์ปฌ๋ ์ ํ๋ ์์ (3) - Stack & Queue (0) | 2022.12.02 |
[Java]์ปฌ๋ ์ ํ๋ ์์ (collections framework) (0) | 2022.11.28 |
[Java]ํ์ํ ํด๋์ค (1) | 2022.11.27 |
[Java]Calendarํด๋์ค (0) | 2022.11.25 |