๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์ž๋ฐ” ArrayList ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ ์ด์ •๋ฆฌ

by 5566 2023. 10. 12.

๋ชฉ์ฐจ

1. ArrayList์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•

2. ArrayList์˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

3. ArrayList์— ์›์†Œ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

4. ArrayList์˜ ํฌ๊ธฐ ๋ฐ ๋ฐฐ์—ด๊ณผ์˜ ์ฐจ์ด์ 

5. ArrayList์˜ ํ™œ์šฉ ์˜ˆ์ œ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

1. ArrayList์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•

ArrayList๋Š” Java์—์„œ ์ œ๊ณตํ•˜๋Š” ๋™์  ๋ฐฐ์—ด ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋™์  ๋ฐฐ์—ด์ด๋ž€, ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋˜๋Š” ๋ฐฐ์—ด์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ArrayList๋Š” ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•  ํ•„์š” ์—†์ด ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayList์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํฌ๊ธฐ์˜ ์ œํ•œ์ด ์—†์Œ: ArrayList๋Š” ๋™์  ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ์˜ ๊ฐœ์ˆ˜์— ์ƒ๊ด€์—†์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ: ArrayList๋Š” ๊ฐ ์›์†Œ์— ์ธ๋ฑ์Šค๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ์— ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘๋ณต ์›์†Œ ํ—ˆ์šฉ: ArrayList๋Š” ์ค‘๋ณต๋œ ์›์†Œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ๊ฐ’์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆœ์„œ ๋ณด์žฅ: ArrayList๋Š” ์›์†Œ๋“ค์„ ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜์—ฌ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

ArrayList๋Š” ์ž๋ฐ”์˜ java.util ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์›์†Œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ArrayList์˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

ArrayList๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) ๊ธฐ๋ณธ ์„ ์–ธ ๋ฐฉ๋ฒ•

ArrayList<์ž๋ฃŒํ˜•> ๋ณ€์ˆ˜๋ช… = new ArrayList<>();

์œ„์™€ ๊ฐ™์ด ArrayList<์ž๋ฃŒํ˜•> ํ˜•ํƒœ๋กœ ์„ ์–ธํ•œ ํ›„, new ArrayList<>() ๋ฌธ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฃŒํ˜•์€ ArrayList์— ์ €์žฅํ•  ์›์†Œ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ArrayList<Integer> numbers = new ArrayList<>();
ArrayList<String> names = new ArrayList<>();

2) ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง„ ์„ ์–ธ ๋ฐฉ๋ฒ•

ArrayList<์ž๋ฃŒํ˜•> ๋ณ€์ˆ˜๋ช… = new ArrayList<>(์ดˆ๊ธฐ๊ฐ’);

ArrayList๋ฅผ ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊ธฐ๊ฐ’์„ ํ•จ๊ป˜ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์€ ArrayList์— ์ €์žฅํ•  ์›์†Œ๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
ArrayList<String> names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie"));

3) ๋‹ค๋ฅธ Collection์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

ArrayList<์ž๋ฃŒํ˜•> ๋ณ€์ˆ˜๋ช… = new ArrayList<>(๋‹ค๋ฅธ Collection);

ArrayList๋ฅผ ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜(List, Set ๋“ฑ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
ArrayList<Integer> numbers = new ArrayList<>(list);

ArrayList์˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ œ๋„ค๋ฆญ์„ ํ™œ์šฉํ•˜์—ฌ ์›์†Œ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•˜๊ณ , new ArrayList<>() ๋ฌธ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ArrayList์— ์›์†Œ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

ArrayList์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) ์›์†Œ ์ถ”๊ฐ€

ArrayList.add(์›์†Œ);

ArrayList์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด add() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. add() ๋ฉ”์†Œ๋“œ๋Š” ArrayList์˜ ๋งจ ๋’ค์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);  // numbers = [10]
numbers.add(20);  // numbers = [10, 20]
numbers.add(30);  // numbers = [10, 20, 30]

2) ์›์†Œ ์‚ญ์ œ

ArrayList.remove(์ธ๋ฑ์Šค);

ArrayList์—์„œ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด remove() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. remove() ๋ฉ”์†Œ๋“œ๋Š” ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ , ๊ทธ ๋’ค์— ์žˆ๋Š” ์›์†Œ๋“ค์„ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(10, 20, 30));
numbers.remove(1);  // numbers = [10, 30]

3) ์›์†Œ ์ ‘๊ทผ

ArrayList.get(์ธ๋ฑ์Šค);

ArrayList์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์›์†Œ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด get() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. get() ๋ฉ”์†Œ๋“œ๋Š” ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(10, 20, 30));
int num = numbers.get(1);  // num = 20

ArrayList์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด add() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์‚ญ์ œํ•˜๋ ค๋ฉด remove() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผํ•  ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด get() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ArrayList์˜ ํฌ๊ธฐ ๋ฐ ๋ฐฐ์—ด๊ณผ์˜ ์ฐจ์ด์ 

ArrayList๋Š” ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) ํฌ๊ธฐ ์กฐ์ •

  • ๋ฐฐ์—ด์€ ์ •์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ด์ „ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ArrayList๋Š” ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ์กฐ์ •๋˜์–ด ์‚ฌ์šฉ์ž๋Š” ํฌ๊ธฐ์˜ ๋ณ€ํ™”๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

2) ์ž๋ฃŒํ˜•

  • ๋ฐฐ์—ด์€ ๋™์ผํ•œ ์ž๋ฃŒํ˜•์˜ ์›์†Œ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด์€ ์ •์ ์ธ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ArrayList๋Š” ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์˜ ์›์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ArrayList๋Š” ๋™์ ์œผ๋กœ ํƒ€์ž…์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

3) ์ž๋™ ๋ฐ•์‹ฑ ๋ฐ ์–ธ๋ฐ•์‹ฑ

  • ๋ฐฐ์—ด์€ ์›์‹œ ์ž๋ฃŒํ˜•(primitive types)๊ณผ ๊ฐ์ฒด ์ž๋ฃŒํ˜•(Object types)์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›์‹œ ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ˆ˜๋™์œผ๋กœ ๋ฐ•์‹ฑ(boxing)๊ณผ ์–ธ๋ฐ•์‹ฑ(unboxing)์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ArrayList๋Š” ๋ชจ๋“  ์›์†Œ๋ฅผ ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ, ์›์‹œ ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ•์‹ฑ๊ณผ ๋ฐ˜๋Œ€๋กœ, ๊ฐ์ฒด๋ฅผ ์›์‹œ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์–ธ๋ฐ•์‹ฑ ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

ArrayList๋Š” ๋ฐฐ์—ด๊ณผ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ์กฐ์ •๋˜๊ณ  ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์˜ ์›์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐฐ์—ด๋ณด๋‹ค ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์›์†Œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ArrayList์˜ ํ™œ์šฉ ์˜ˆ์ œ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

ArrayList์˜ ํ™œ์šฉ ์˜ˆ์ œ

๋‹ค์Œ์€ ArrayList์˜ ํ™œ์šฉ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        // ArrayList ์ƒ์„ฑ
        ArrayList<String> students = new ArrayList<>();

        // ์›์†Œ ์ถ”๊ฐ€
        students.add("Tom");
        students.add("Jerry");
        students.add("Alice");
        students.add("Bob");
        students.add("Emma");

        // ์›์†Œ ์ ‘๊ทผ
        System.out.println(students.get(2));  // Alice

        // ์›์†Œ ์ˆ˜์ •
        students.set(1, "Mickey");
        System.out.println(students.get(1));  // Mickey

        // ์›์†Œ ์‚ญ์ œ
        students.remove(0);
        System.out.println(students);  // [Mickey, Alice, Bob, Emma]

        // ArrayList ํฌ๊ธฐ
        int size = students.size();
        System.out.println(size);  // 4
    }
}

์œ„ ์˜ˆ์ œ์—์„œ๋Š” ArrayList๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•™์ƒ๋“ค์˜ ์ด๋ฆ„์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. add() ๋ฉ”์†Œ๋“œ๋กœ ํ•™์ƒ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ณ , get() ๋ฉ”์†Œ๋“œ๋กœ ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ํ•™์ƒ ์ด๋ฆ„์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, set() ๋ฉ”์†Œ๋“œ๋กœ ํ•™์ƒ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•˜๊ณ , remove() ๋ฉ”์†Œ๋“œ๋กœ ํ•™์ƒ ์ด๋ฆ„์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, size() ๋ฉ”์†Œ๋“œ๋กœ ArrayList์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ArrayList์˜ ์ฃผ์˜์‚ฌํ•ญ

ArrayList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1) ์›์†Œ์˜ ์ธ๋ฑ์Šค
ArrayList์˜ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ๋Š” ์ธ๋ฑ์Šค 0์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2) ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
ArrayList๋Š” ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€/์‚ญ์ œ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ArrayList๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3) ๋™๊ธฐํ™”
ArrayList๋Š” ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๋™์‹œ์— ArrayList๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ถˆ์ผ์น˜(inconsistent)ํ•œ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•œ ๋™๊ธฐํ™”๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ArrayList ๋Œ€์‹  Vector๋‚˜ CopyOnWriteArrayList๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ArrayList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ธ๋ฑ์Šค์˜ ์‹œ์ž‘ ๊ฐ’, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, ๋™๊ธฐํ™” ๋“ฑ์„ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ArrayList๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ์›์†Œ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€