Skip to content

Latest commit

ย 

History

History
138 lines (84 loc) ยท 7.2 KB

File metadata and controls

138 lines (84 loc) ยท 7.2 KB

Array vs ArrayList vs LinkedList ์ฐจ์ด

์ถœ์ฒ˜ : https://gyoogle.dev/blog/computer-science/data-structure/Array%20vs%20ArrayList%20vs%20LinkedList.html

1. tmi ์ •๋ฆฌํ•˜๋Š” ์ด์œ 

์˜ค๋Š˜ ์Šคํ„ฐ๋”” ํ•˜๋Š” ๋ฐ ๋‹ค๋ฅธ ํŒ€์›๋ถ„๋“ค์„ ์–˜๊ธฐํ•ด์ค€ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ดํ•ดํ•œ ๊ฒƒ๊ณผ ์ฐพ์•„๋ณธ ๊ฑฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ข€ ๋” ์ •๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•จ + 8/17 ์ˆ˜์—…์‹œ๊ฐ„ ์ •๋ฆฌ ๋‚ด์šฉ ์ถ”๊ฐ€

2. Array(๋ฐฐ์—ด)

  1. ์„ ์–ธํ•  ๋•Œ ํฌ๊ธฐ์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.
int arr[10];
String arr[5];
int[] myArray = new int[10];
  1. ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด index๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด ๊ฒ€์ƒ‰์— ํŽธํ•œ ์žฅ์ ์ด ์žˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์šฉ์ด

๐Ÿ ๋‹จ์ 

  1. ์ •์  ํ• ๋‹น(static allocation) : ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์„ ์–ธ ํ•  ๋•Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ํ•œ ๋ฒˆ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
  2. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์›๋ž˜๊ฐ’์„ ๋ฐ€์–ด๋‚ด๊ณ  ํ•ด๋‹น INDEX์— ๋ฎ์–ด์”Œ์›Œ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

3. ArrayList

List๋Š” array์ฒ˜๋Ÿผ ํฌ๊ธฐ๋ฅผ ์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ์˜ ๋ฌธ์ œ์ธ ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜์˜จ ๊ฒƒ์œผ๋กœ array์—์„œ๋Š” index๊ฐ€ ์ค‘์š”ํ–ˆ๋‹ค๋ฉด, List์—์„œ๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

  1. ArrayList๋Š” ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ๋ฐฐ์—ด์˜ ๊ตฌํ˜„์ฒด๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด๋„ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋œ๋‹ค.
  2. ArrayList๋Š” ๊ฐ์ฒด์— ์ €์žฅํ•˜๋ฉฐ, ๊ฐ์ฒด ์ถ”๊ฐ€/์‚ญ์ œ์— ์šฉ์ดํ•˜๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
  3. ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋˜์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ํ™•์žฅ๋˜๋ฏ€๋กœ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ์ œํ•œ ๊ทน๋ณต ๊ฐ€๋Šฅ
  4. Java์˜ ์ œ๋„ค๋ฆญ(Generic) ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ArrayList์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณด

๐Ÿ ํŠน์ง•

  1. ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๋ฆฌ์ŠคํŠธ(์ค‘๊ฐ„์— ๋นˆ ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.)
  2. ArrayList ํด๋ž˜์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Object[] ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅ
  3. ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์š”์†Œ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  4. ๋ฐ์ดํ„ฐ์˜ ์ ์žฌ๋Ÿ‰(Capacity)์— ๋”ฐ๋ผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ ๋‹จ์ 

  1. ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ ์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ ์‹œ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. (๋”ํ•˜๊ฑฐ๋‚˜ ๋บ„๋•Œ๋งˆ๋‹ค ์ค„์ค„์ด ๋‹น๊ฒจ์ง€๊ฑฐ๋‚˜ ๋ฐ€๋ ค๋‚  ๋•Œ ์ง„ํ–‰๋˜๋Š” ์—ฐ์‚ฐ์ด ์ถ”๊ฐ€, ๋ฉ”๋ชจ๋ฆฌ๋„ ๋‚ญ๋น„..) ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฉฐ ๋™์ž‘์ด ๋А๋ฆฌ๋‹ค.
  2. ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™์ผํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ƒ์„ฑํ•œ ArrayList๋Š” ๊ทธ ๋‚ด๋ถ€์˜ ์š”์†Œ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค.
  3. ์กฐํšŒ ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
import java.util.ArrayList;

// ArrayList ์ƒ์„ฑ
ArrayList<Integer> myList = new ArrayList<>();

// ์š”์†Œ ์ถ”๊ฐ€
myList.add(10);
myList.add(20);

// ์š”์†Œ ์ ‘๊ทผ
int element = myList.get(0);

// ์š”์†Œ ์‚ญ์ œ
myList.remove(0);

4. LinkedList

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—๋Š” ๋‹จ์ผ, ๋‹ค์ค‘ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ข…๋ฅ˜๊ฐ€ ๋ฌด์—‡์ด๋“ , ํ•œ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋  ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉ์‹

  1. ์ด๋Ÿฐ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋ฉด์„œ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๊ฐ„์— ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ๋ฅผ ํ•˜๋”๋ผ๋„ ์ „์ฒด๋ฅผ ๋Œ์ง€ ์•Š์•„๋„ ์ด์ „ ๊ฐ’๊ณผ ๋‹ค์Œ๊ฐ’์ด ๊ฐ€๋ฅด์ผฐ๋˜ ์ฃผ์†Œ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜์—ฌ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ• ๊ฐ™์•„๋ณด์ด์ง€๋งŒ, List์˜ k๋ฒˆ์งธ ๊ฐ’์„ ์ฐพ์•„๋ผ์—์„œ๋Š” ๋น„ํšจ์œจ์ 

๐Ÿ ๋‹จ์ 

  1. array๋‚˜ arrayList์—์„œ index๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์ด ๋น ๋ฅด์ง€๋งŒ, LinkedList๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์‚ดํŽด๋ด์•ผํ•˜๋ฏ€๋กœ(์ˆœ์ฐจ) ๊ฒ€์ƒ‰์— ์žˆ์–ด์„œ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ 
  2. ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

5. ์ „์ฒด ๋น„๊ต ์š”์•ฝ

๐Ÿ ํฌ๊ธฐ ์ œํ•œ

๋ฐฐ์—ด: ๊ณ ์ • ํฌ๊ธฐ, ๋ณ€๊ฒฝ์ด ์–ด๋ ค์›€. ArrayList: ํฌ๊ธฐ ๋™์  ์กฐ์ ˆ ๊ฐ€๋Šฅ. Linked List: ํฌ๊ธฐ ๋™์  ์กฐ์ ˆ ๊ฐ€๋Šฅ.

๐Ÿ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ

๋ฐฐ์—ด: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ์— ์ œ์•ฝ์ด ์žˆ์Œ. ArrayList: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ์šฉ์ด. Linked List: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ์šฉ์ด (ํŠนํžˆ ์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ).

๐Ÿ ๊ฒ€์ƒ‰ ์†๋„

๋ฐฐ์—ด: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ArrayList: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ. (๊ฒ€์ƒ‰์€ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌ) Linked List: ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋ฐฐ์—ด, ArrayList์— ๋น„ํ•ด ๋А๋ฆผ.

๐Ÿ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

๋ฐฐ์—ด: ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ. ArrayList: ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด ์‚ฌ์šฉ, ํฌ๊ธฐ ์กฐ์ ˆ ๊ฐ€๋Šฅ. Linked List: ๊ฐ ์š”์†Œ๊ฐ€ ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋” ์‚ฌ์šฉ.

๐Ÿ ์‚ฌ์šฉ ์‚ฌ๋ก€

๋ฐฐ์—ด: ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๊ฑฐ์˜ ์—†๋Š” ๊ฒฝ์šฐ, ๋น ๋ฅธ ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ. ArrayList: ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋น ๋ฅธ ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ. Linked List: ์š”์†Œ์˜ ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ.

6. ์ฐธ๊ณ 

8/23 ๊ตญ๋น„์—์„œ ํ…Œ์ŠคํŠธ ๋ณด๋‹ค๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์•„ ์ถ”๊ฐ€ํ•จ

๐Ÿ ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค๋ผ๋Š” ๋ง์€ ๋งž๋Š” ๋ง์ผ๊นŒ?

์ผ๋‹จ ๋‹ต์€ NO์ด๋‹ค

  1. ArrayList
  • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๋•Œ๋ฌธ์— ArrayList์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๊ทธ ๋‹ค์Œ ์ธ๋ฑ์Šค์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ž์œผ๋กœ ๋‹น๊ฒจ์ง„๋‹ค.
  • ๋”ฐ๋ผ์„œ "๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ๊ฒƒ์€ ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋”๋ผ๋„ ํ•ด๋‹น ์œ„์น˜์— null ๋˜๋Š” ๋‹ค๋ฅธ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ฑ„๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค.
  1. LinkedList
  • ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์ด์ „ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์ด์ „ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋งŒ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ, "๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ๊ทœ์น™์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์ง€

๋”ฐ๋ผ์„œ "๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ์„ค๋ช…์€ ArrayList์™€ ๊ฐ™์€ ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ LinkedList์—๋„ ์ธ๋ฑ์Šค๋Š” ์žˆ๋‹ค.

  1. LinkedList๋„ ๊ฐ ์š”์†Œ์— ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ArrayList์™€๋Š” ๋‹ค๋ฅด๊ฒŒ LinkedList์˜** ์ธ๋ฑ์Šค๋กœ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์€ ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.**
  2. LinkedList๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๋‹ค์Œ ์š”์†Œ์™€ ์ด์ „ ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์›ํ•˜๋Š” ์œ„์น˜๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋ ค๋ฉด **์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๊ฐ€์•ผ ํ•œ๋‹ค. **๋ฐ˜๋ฉด์— ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์ธ๋ฑ์Šค๋กœ ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

7. ํšŒ๊ณ 

์Šคํ„ฐ๋””์—์„œ ์ข‹์€ ์ ์€ ๋‚ด๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„ ํ•œ๋ฒˆ ๋” ์ •๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ™”์ดํŒ