์ถ์ฒ
ChatGPT
์์ฆ ๊ฐ๋ฐ์๋ค์ Vector์ ๋ง์ฐฌ๊ฐ์ง๋ก Stack๋ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝํฅ์ด ์๋ค. ๊ทธ ์ด์ ๋ Stack ํด๋์ค๊ฐ Vector๋ฅผ ์์๋ฐ์ ๊ตฌํ๋์๊ธฐ ๋๋ฌธ์ด๋ค. Vector์ ๋ฌธ์ ์ ๋ค์ด Stack์์ ๋์ผํ๊ฒ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ค์ ๋ ๋์ ๋์๋ค์ ์ ํธํ๋ค.
Vector์ Stack์ ๋ฌธ์ ์
1. ๋๊ธฐํ๋ ๋ฉ์๋
Vector์ ์ด๋ฅผ ์์๋ฐ์ Stack์ ๋ด๋ถ ๋ฉ์๋ค์ด ๋๊ธฐํ(synchronized)๋์ด ์๋ค. ๋๊ธฐํ๋ ๋ฉ์๋๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ ๋ ์์ ํ์ง๋ง, ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋ถํ์ํ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์๋ค. ๋๋ถ๋ถ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ช ์์ ์ผ๋ก ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ์ ์๋ ๋ ๋์ ๋์์ด ์๋ค.
2. ๋ ๊ฑฐ์ ์ฝ๋
Vector์ Stack์ ์๋ฐ 1.0๋ถํฐ ์กด์ฌํด ์จ ๋ ๊ฑฐ์ ํด๋์ค๋ค์ด๋ค. ์๋ฐ 2์์ ์ปฌ๋ ์ ํ๋ ์์ํฌ๊ฐ ๋์ ๋ ์ดํ, ArrayList, LinkedList, Deque์ ๊ฐ์ ๋ ์ ์ฐํ๊ณ ํ๋์ ์ธ ์ปฌ๋ ์ ํด๋์ค๋ค์ด ๋ฑ์ฅํ๋ค. ์ด๋ฌํ ์๋ก์ด ํด๋์ค๋ค์ Vector์ Stack ๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ฑ์ ์ ๊ณตํ๋ฉฐ, ๋๋ถ๋ถ์ ์๋ก์ด ์๋ฐ ์ฝ๋์์๋ ์ ํธ๋๋ค.
3. ์ ๋ค๋ฆญ ํ์ ์ง์
Vector์ Stack์ ์๋ฐ 1.5์์ ์ ๋ค๋ฆญ์ผ๋ก ์ ํ๋์์ง๋ง, ์ฌ์ ํ ์ค๋๋ ๋์์ธ ํจํด๊ณผ ๋ฉ์๋๋ค์ด ๋จ์ ์์ด, ์๋ก์ด ์ ๋ค๋ฆญ ์ปฌ๋ ์ ํด๋์ค๋ค์ ๋นํด ๋ ์ง๊ด์ ์ด๋ค. ์๋ฅผ ๋ค์ด, Deque<E> ์ธํฐํ์ด์ค์ ArrayDeque<E> ํด๋์ค๋ Stack์ ๊ธฐ๋ฅ์ ๋์ฒดํ๋ ๋ฐ ๋ ์ ํฉํ๋ฉฐ, ๋ณด๋ค ๋ช ํํ๊ณ ์ฑ๋ฅ๋ ์ฐ์ํ๋ค.
- Deque<E> ์ธํฐํ์ด์ค์ ArrayDeque<E> ํด๋์ค๊ฐ Stack์ ๊ธฐ๋ฅ์ ๋์ฒดํ๋ ๋ฐ ๋ ์ ํฉํ๊ณ , ๋ช ํํ๋ฉฐ ์ฑ๋ฅ์ด ์ฐ์ํ ์ด์
Deque<E> ์ธํฐํ์ด์ค์ ArrayDeque<E> ํด๋์ค๊ฐ Stack์ ๊ธฐ๋ฅ์ ๋์ฒดํ๋ ๋ฐ ๋ ์ ํฉํ๊ณ , ๋ช ํํ๋ฉฐ ์ฑ๋ฅ์ด ์ฐ์ํ ์ด์
1. ๋ ๋์ API ์ค๊ณ
๋ช ํํ ๋ฉ์๋ ๋ช ์นญ
Deque ์ธํฐํ์ด์ค๋ ์คํ๊ณผ ํ์ ๋ ๊ฐ์ง ์ฉ๋๋ฅผ ๋ชจ๋ ๋ช ํํ๊ฒ ํํํ๋ ๋ฉ์๋ค์ ์ ๊ณตํ๋ค. ์๋ฅผ ๋ค์ด, ์คํ์ผ๋ก ์ฌ์ฉํ ๋๋ push(), pop() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ , ํ๋ก ์ฌ์ฉํ ๋๋ offer(), poll() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฌํ ๋ช ํํ ๋ฉ์๋ ์ด๋ฆ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ค.
์๋ฐฉํฅ ์ ๊ทผ์ฑ
Deque๋ ์์ชฝ ๋์์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ ์๋ฐฉํฅ ํ(Double-Ended Queue)๋ฅผ ํํํ๋ค. ์ด ํน์ฑ ๋๋ถ์ Deque๋ ํ์ ์คํ์ ๊ธฐ๋ฅ์ ๋์์ ์ํํ ์ ์์ผ๋ฉฐ, ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค. ๋ฐ๋ฉด, Stack์ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ์๋ใ ํ๋ฉฐ, ๊ธฐ๋ฅ์ ์ผ๋ก ์ ํ์ ์ด๋ค.
2. ์ฑ๋ฅ์์ ์ด์
๋๊ธฐํ๋์ง ์์ ๊ตฌํ
Stack์ Vector๋ฅผ ์์๋ฐ์ ๋ด๋ถ์ ์ผ๋ก ๋ชจ๋ ๋ฉ์๋๊ฐ ๋๊ธฐํ(synchronizedd)๋์ด ์๋ค. ์ด๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ ์์ ํ์ง๋ง, ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋ถํ์ํ ๋๊ธฐํ๋ก ์ธํด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ฉด, ArrayDeque๋ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์,๋๊ธฐํ ์ค๋ฒํค๋ ์์ด ๋ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๋ค. ํ์ํ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๊ฐ ์ง์ ๋๊ธฐํ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
ArrayDeque๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๋ฐฐ์ด์ ์ฌ์ฉํด ์์๋ฅผ ์ ์ฅํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธก๋ฉด์์ ํจ์จ์ ์ด๋ฉฐ, Stack์ด ์ฌ์ฉํ๋ Vector์ ํ์ฅ ๋ฐฉ์(๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ ๋๋ฆฌ๋ ๋ฐฉ์)๋ณด๋ค ์ ์ฐํ๋ค.
3. ๋ ํ๋์ ์ธ ๋์ฒดํ
์ปฌ๋ ์ ํ๋ ์์ํฌ ํตํฉ
ArrayDeque๋ ์๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ผ๋ถ๋ก, ๋ค๋ฅธ ์ปฌ๋ ์ ๋ค๊ณผ ํจ๊ป ์ ๋์ํ๋๋ก ์ค๊ณ๋์๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ค๋ฆญ ํ์ ์ ์ง์ํ๋ฉฐ, ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๋ค์ํ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Stack์ ๋ ๊ฑฐ์ ํด๋์ค๋ก ๊ฐ์ฃผ๋๋ฉฐ, ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ค.
4. ์ฌ์ฉ ์ฌ๋ก์ ๋ช ํ์ฑ
๋ช ํํ ์ญํ ๊ตฌ๋ถ
ArrayDeque์ ๊ฐ์ Deque ๊ตฌํ์ฒด๋ ์คํ๊ณผ ํ์ ์ญํ ์ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ์ฝ๋์ ์๋๋ฅผ ๋ ๋ช ํํ๊ฒ ๋ง๋ค๋ฉฐ, ์ ์ง๋ณด์์ ํ์ ์์๋ ๋ ํฐ ์ฅ์ ์ ์ ๊ณตํ๋ค. Stack ์ ๋จ์ผ ๊ธฐ๋ฅ ํด๋์ค์ด๋ฉฐ, ์ปฌ๋ ์ ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ์๋ ์ ํฉํ์ง ์๋ค.
ํ๋์ ์ธ ๋์
ArrayDeque<E>
ArrayDeque๋ Deque ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ก, ์คํ๊ณผ ํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ง์ํ๋ค. ArrayDeque๋ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ Stack๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ, ๋๋ถ๋ถ์ ์คํ ๊ตฌํ์ ์ถ์ฒ๋๋ค.
LinkedList<E>
LinkedList๋ List์ Deque ์ธํฐํ์ด์ค๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ฉฐ, ์คํ๊ณผ ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค. LinkedList๋ ์ฝ์ ๊ณผ ์ญ์ ์์ ์ด ๋น๋ฒํ ๊ฒฝ์ฐ์ ์ ํฉํ ์ ํ์ด๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ] ๋์ ๋ฐฐ์ด๊ณผ ์ ์ ๋ฐฐ์ด (0) | 2024.08.30 |
---|---|
[ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ] (์ ์ ) ๋ฐฐ์ด์ ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๋๊ฐ (0) | 2024.08.30 |
[Java] ๊ฐ๋ฐ์๋ค์ด Vector๋ฅผ ์ฐ์ง ์๋ ์ด์ (0) | 2024.08.29 |
[ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ] ํ๋ฐฉ ํธํ์ฑ Backward Compatibility (0) | 2024.08.29 |
[Java] Iterator. for ๋ฌธ๊ณผ์ ๋น๊ต (0) | 2024.08.29 |