Live Today
[์๋ฃ๊ตฌ์กฐ] Array & ArrayList & LinkedList ๋ณธ๋ฌธ
[์๋ฃ๊ตฌ์กฐ] Array & ArrayList & LinkedList
ilivetoday 2022. 8. 15. 20:19
๐Array(๋ฐฐ์ด)
- ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์ด๋ฆ์ผ๋ก ๊ทธ๋ฃนํํด์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ. index์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ
- index๋ ๊ฐ์ ๋ํ ์ ์ผ๋ฌด์ดํ ์๋ณ์(๋ง์น ์ฃผ๋ฏผ๋ฒํธ)( ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค๋ ๋ช ๋ฒ์งธ ๋ฐ์ดํฐ์ธ๊ฐ ์ ๋์ ์๋ฏธ๋ฅผ ๊ฐ์ง)
- ๋ ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์ผ์น => index๋ก ํด๋น ์์์ ์ ๊ทผํ ์ ์๋ค. (O(1))
- ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฐฐ์ด์ ์ ์ธ๊ณผ ๋์์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ฉฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
์ฅ์
- ์ธ๋ฑ์ค๋ฅผ ํตํ ๊ฒ์์ด ์ฉ์ดํจ.
- ์ฐ์์ ์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํธํ๋ค.
๋จ์
- ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์๋ฆฌ๋จผํธ๊ฐ ์ญ์ ๋๋ฉด, ์ญ์ ๋ ์ํ๋ฅผ ๋น ๊ณต๊ฐ์ผ๋ก ๋จ์ผ๋ฏ๋ก ์ฝ์ /์ญ์ ์ฐ์ฐ์ ๋ถ๋ฆฌํจ.
- ์ ์ ์ด๋ฏ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ปดํ์ผ ์ด์ ์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
- ์ปดํ์ผ ์ดํ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๋ ํ ์ ์๋ค.
๐List
- ๋ฆฌ์คํธ๋ ์์๊ฐ ์๋ ์๋ฆฌ๋จผํธ์ ๋ชจ์์ผ๋ก ๋ฐฐ์ด๊ณผ๋ ๋ค๋ฅด๊ฒ ๋น ์๋ฆฌ๋จผํธ๋ ์ ๋ ํ์ฉํ์ง ์๋๋ค.
- ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ด ๊ฐ์ง๊ณ ์๋ ์ธ๋ฑ์ค๋ผ๋ ์ฅ์ ์ ๋ฒ๋ฆฌ๊ณ ๋์ ๋นํ์๋ ๋ฐ์ดํฐ์ ์ ์ฌ ๋ผ๋ ์ฅ์ ์ ์ทจํจ
- ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค๋ ๋ช ๋ฒ์งธ ๋ฐ์ดํฐ์ธ๊ฐ ์ ๋(์์)์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. (๋ฐฐ์ด-Array์์์ ์ธ๋ฑ์ค๋ ๊ฐ์ ๋ํ ์ ์ผ๋ฌด์ดํ ์๋ณ์)
- ๋ถ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์ง.
- ํฌ์ธํฐ๋ฅผ ํตํ ์ ๊ทผ
์ฅ์
- ํฌ์ธํฐ๋ฅผ ํตํ์ฌ ๋ค์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ๋ฅด์ผ๊ณ ์์ด ์ฝ์ /์ญ์ ์ ์ฉ์ด.
- ๋์ ์ด๋ฏ๋ก ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ง ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฌ์ฉ ํธ๋ฆฌ
- ๋ถ์ฐ์์ ์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํธ๋ฆฌ
๋จ์
- ๊ฒ์ ์ฑ๋ฅ์ด ์ข์ง ์๋ค.
- ํฌ์ธํฐ๋ฅผ ํตํด ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฅดํค๋ฏ๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ฐ์.
โ๏ธ ๋ฐฐ์ด vs ๋ฆฌ์คํธ ์ ๋ฆฌ
• ๋ฐฐ์ด : ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์๊ณ , ์ถ๊ฐ์ ์ธ ์ฝ์ ์ญ์ ๊ฐ ์ผ์ด ๋์ง ์์ผ๋ฉฐ ๊ฒ์์ ํ์๋ก ํ ๋ ์ ๋ฆฌ.
• ๋ฆฌ์คํธ : ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ง ์๊ณ , ์ฝ์ ์ญ์ ๊ฐ ๋ง์ด ์ผ์ด๋๋ฉฐ, ๊ฒ์์ด ์ ์ ๊ฒฝ์ฐ ์ ๋ฆฌ.
Java์์ ๊ธฐ๋ณธํ(int, boolean, String, char) ๋๋ ์ธ์คํด์ค๋ฅผ ๋ฆฌ์คํธ๋ก ์ ์ฅํ๋๋ฐ๋ ๋ณดํต ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๋ฐฐ์ด์ ์ ์ธ์์ ํฌ๊ธฐ๋ฅผ ์ ํด์ค์ผ ํ๋ฏ๋ก, ๋์ ์ผ๋ก ์์์ ์ถ๊ฐ๋ ์ญ์ ๋ฑ์ด ๋ถ๊ฐ๋ฅํ๋ค๋๋ฐ ๊ทธ ๋จ์ ์ด ์๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ค๋ฉด, ์ง์ ์๋ก์ด ๋ฐฐ์ด์ ์ ์ธํด์ฃผ์ด์ ์นดํผํ๋ ์์ผ๋ก ์ฌ์ฉํด์ผํ๋ค. ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด์ผ๋๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋, ์ด๋ค ํ๋ก๊ทธ๋จ์ ๊ตฌํ์์ ์ด๋ ๊ฝค๋ ํฐ ๋ถํธํจ์ผ๋ก ๋ค๊ฐ์จ๋ค.
์ด๋ฌํ ๋ถํธํจ์ ํด์์์ผ์ฃผ๋ ๊ฒ์ด List ์ธํฐํ์ด์ค๋ฅผ ์์ํ์ฌ ๊ตฌํ๋ ArrayList์ LinkedList ํด๋์ค์ด๋ค. ์ด ๋์ ๋ชจ๋ Collections ๊ฐ์ฒด์ ์ผ์ข ์ด๋ค. ์ด ๋ ๊ฐ์ง ๋ฆฌ์คํธ๋ ๋์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ด ์๋ก์ด ๊ฐ์ ์ถ๊ฐ๋ ์ ๊ฑฐ๊ฐ ์ ์ฉํ์ฌ ๊ธฐ๋ณธ ๋ฐฐ์ด์ ๋จ์ ์ ์ปค๋ฒํด์ค๋ค.
Java List Collection
- List๋ Collection ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํ ์๋ฃํ์ผ๋ก ๋์ผํ ๋ฐ์ดํฐ์ ์ค๋ณต ์ ๋ ฅ์ด ๊ฐ๋ฅํ๋ฉฐ ์์ฐจ์ ์ด๊ณ ๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ๋ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ข ๋ฅ๋ Vector, Arraylist, Linkedlist๊ฐ ์์ต๋๋ค.
๐ArrayList
- ์ผ๋ฐ ๋ฐฐ์ด๊ณผ ArrayList๋ ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค๋ ์ ์์ ๋์ผํ์ง๋ง, ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ๋๋ฆด ์ ์๋ค๋ ์ ์์ ์ฐจ์ด์ ์ด ์๋ค.
- ArrayList๋ ๋ด๋ถ์์ ์ฒ์ ์ค์ ํ ์ ์ฅ ์ฉ๋(capacity)๊ฐ ์๋ค. ์ค์ ํ ์ ์ฅ ์ฉ๋ ํฌ๊ธฐ๋ฅผ ๋์ด์ ๋ ๋ง์ ๊ฐ์ฒด๊ฐ ๋ค์ด์ค๊ฒ ๋๋ฉด, ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ 1.5๋ฐฐ๋ก ์ฆ๊ฐ์ํด.
- ๋ฐฐ์ด์ ์ด์ฉํด ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ ๊ฒ
- ์ ๊ทผ์ด ๋น ๋ฆ(์์ฐจ x) ํ์ง๋ง ๋ฐ์ดํฐ ์ถ๊ฐ์ ์ญ์ ๊ฐ ๋๋ฆผ
- ๋์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ํ๋ฌ(์๋ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฌ์ด์ฆ๋ฅผ ํค์์ ๊ด๋ฆฌํ๋ค. → Dynamic Array)
๐LinkedList
- ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ(link)์ ํตํด์ ๋ฆฌ์คํธ๋ก ๊ตฌํ๋ ๊ฐ์ฒด์ด๋ค.
- ๋ค์ ๋
ธ๋์ ์์น ์ ๋ณด๋ง ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ํ์์
์์ฐจ์ ๊ทผ
๋ง ๊ฐ๋ฅ (๋ ธ๋ ํ์ ์ ์๊ฐ์ด ๋ง์ด ์์๋ ์ ์์)(randomAccess ๋ถ๊ฐ๋ฅ) - ๋ ธ๋ ์ถ๊ฐ/์ญ์ ๋ ์์น์ ๋ณด์ ์์ ๋ง์ผ๋ก ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ข์
- LinkedList๋ ArrayList์๋ ๋ฌ๋ฆฌ List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ AbstractList๋ฅผ ์์ํ์ง ์๊ณ AbstractSequentialList๋ฅผ ์์ํ๋ค.
๐ ์ฐธ๊ณ ๋งํฌ
[ ์๋ฃ๊ตฌ์กฐ ] ๋ฐฐ์ด(Array) vs ๋ฆฌ์คํธ(List) - ํน์ง, ์ฐจ์ด
[์๋ฃ๊ตฌ์กฐ]Array์ List(๊ทธ๋ฆฌ๊ณ Java List)
'Computer Science > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] Trie(ํธ๋ผ์ด) (1) | 2022.10.03 |
---|---|
[์๋ฃ๊ตฌ์กฐ] B-Tree & B+ Tree (3) | 2022.09.19 |
[์๋ฃ๊ตฌ์กฐ] Binary Search Tree(์ด์ง ํ์ ํธ๋ฆฌ) (3) | 2022.08.30 |
[์๋ฃ๊ตฌ์กฐ] Stack & Queue & Map & Set (6) | 2022.08.07 |