LinkedList
Collections Framework์ LinkedList
๋งํฌ๋ ๋ฆฌ์คํธ(Linked List)๋?
๋งํฌ๋ ๋ฆฌ์คํธ์ ๊ตฌ์ฑ์ ๋ณด๋ฉด ์๋ก ์ฐ์์ ์ด์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์์์ ์ฐ๊ฒฐ์ ์ฐ์์
์ด์ง ์๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๊ตฌ์ฑ์์๋ ์ฐธ์กฐ๊ฐ์ ๊ฐ๋ HEAD๊ฐ ์กด์ฌํ๋ค.
HEAD๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ๋ ธ๋์ ์ ๊ทผ ํ ์ ์๋ค.
LinkedList๋ฅผ ๊ตฌ์ฑํ๋ ๋ ธ๋(Node)๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ ธ๋์ ๊ฐ(๋ฐ์ดํฐ)
๋ค์ ๋ ธ๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ํ๋(์ฐธ์กฐํ๋ ๋ถ๋ถ) -> ๋ ธ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์์น๋ ์ผ๋์ผ ์ฐธ์กฐ์ด๋ค.
Array์์ ์ฐจ์ด์

Array์์ ํฐ ์ฐจ์ด์ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ ๋ฆฝ๋ ๊ฐ์ฒด์ด๋ค. LinkedList๋ด์ ์กด์ฌํ๋ ๋ ธ๋๊ฐ ํ์๊ฐ ์์ด์ง๋ฉด ์ญ์ ํ ์ ์์ง๋ง ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๊ตฌ์ฑ๋ ์ ์ ๋ณ๋์ ๊ฐ์ฒด๊ฐ ์๋๋ฏ๋ก ์ญ์ ํ ์ ์๋ค. -> ์ ์ ๊ฐ์ ์ญ์ ๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ ์์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์กด์ฌํ๊ฒ ๋๋ค .
๋๋ฒ์จฐ๋ ๊ฐ๋ณ ํฌ๊ธฐ์ด๋ค.LinkedList๋ ๋ชฉ๋ก ๋์ ๋ ธ๋๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ง๋ง ์ด๋ฏธ ํ ๋น๋ ๋ฐฐ์ด์ ์ฉ๋์ด ์ต๋๋ก ๋๋ฌํ๋ฉด ๋ฐฐ์ด ๋์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
์ธ๋ฒ์งธ๋ ํ์ ์๋์ด๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ๋ฉด O(1)๋ก ๋น ๋ฅด๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. LinkedList์ ๊ฒฝ์ฐ์๋ HEAD๋ถํฐ ์์ํด์ ๋ค์ ๋ ธ๋๋ก ์ด๋ํ ์ ์๋ค. ์ด๋ ์์์ ์์ธ์คํ๋ ๊ฒ์ ๋ํด์๋ ํจ์จ์ ์ด์ง ์๋ค๊ณ ๋งํ ์ ์๋ค. ๊ทธ๋์ ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด ๊ฑธ๋ฆฐ๋ค.
ํน์ง
ํ์์ ArrayList๋ณด๋ค ๋๋ฆฌ๋ค. -> ArrayList๋ ๋ด๋ถ์ ์ผ๋ก Array๋ฅผ ์ด์ฉํจ.
์์์ ์ฝ์ /์ญ์ ๋ ArrayList๋ณด๋ค ๋น ๋ฅด๋ค.
์์๋ฅผ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ ์ค๋ณต๋ ํ์ฉํ๋ค.
๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฅดํค๋ ์ฐธ์กฐ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ์ฐจ์งํ ์ ์๋ค.
์ฝ์ /์ญ์ ์ฐ์ฐ์ด ๋ง์ด ๋ฐ์ํ๊ณ , ์์ ์ ๊ทผ(์ฝ๊ธฐ)๊ฐ ์๋์ ์ผ๋ก ์ ์ ๊ฒฝ์ฐ ์ ํฉํ๋ค.
LinkedList๋ ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List), ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Doubly Linked List), ์๋ฐฉํฅ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Doubly Linked List)๊ฐ ์๋ค.
๊ตฌํ
class LinkedList<T>
addFirst(Element)

addLast(Element)
Node node(index) : ๋ด๋ถ์ ์ผ๋ก Node๋ฅผ ๋ฐํํด์ฃผ๋ ๋ฉ์๋
add(index, Element) : ํน์ ์์น์ ์์๋ฅผ ์ถ๊ฐ
toString() ์ค๋ฒ๋ผ์ด๋ฉ
removeFirst
remove(int index)
removeLast()
size()
get(int index)
indexOf(Object node)
inner class ListIterator
Iterator next(), hasNext()
Last updated