Java

[Java] ์ž๋ฐ” List์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ArrayList์™€ LinkedList์— ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด๊ธฐ

joheamin 2025. 4. 2. 00:05

 

๐Ÿ”ท List

 

  List๋Š” Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

 

 

 

์ž๋ฐ”์—๋Š” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๋‹ค์–‘ํ•œ ์ €์žฅ ๊ตฌ์กฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ์„ธ๊ฐœ์˜ ๊ตฌ์กฐ๋กœ๋Š”

List / Set / Map์ด ์žˆ๋‹ค.

 

 

 


โœ”๏ธ์˜ค๋Š˜ ์•Œ์•„๋ณผ List

Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

 

โ—พ List์˜ ํŠน์ง•

๋ฐ์ดํ„ฐ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜์—ดํ•ด์„œ ์—ฐ์†๋œ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
์ค‘๋ณต์ด ํ—ˆ์šฉ๋œ๋‹ค.

 

 

โ—พ ArrayList ์™€ LinkedList

๋‘˜์€ List๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ด๋‹ค.

 

List๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒดํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ArrayList ํ˜น์€ LinkedList๋กœ ์ธ์Šคํ„ด์Šคํ™” ํ•ด์ค€๋‹ค.

 

 

 

๐Ÿ”น ArrayList 

 

โœ”๏ธ ArrayList์˜ ํŠน์ง•

์—ฐ์†๋œ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค.
๋ฐฐ์—ด๊ณผ์˜ ์ฐจ์ด์ ์€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š๋Š”๋‹ค๋Š”๊ฒƒ์ด๋‹ค.

๋ฐฐ์—ด์€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜๋ฉฐ ์ถ”๊ฐ€๋ฅผ ํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์•ผํ•˜์ง€๋งŒ
ArrayList๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋  ์‹œ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

 

โœ”๏ธ ArratList์˜ ๋‹จ์ 

๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‚ฝ์ž…ํ•  ๋•Œ ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ๋งŽ๋‹ค.
๋”ฐ๋ผ์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๊ฐ„๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋  ๊ฒฝ์šฐ
์‚ญ์ œ๋˜๊ณ  ๋‚จ์€ ๋นˆ์ž๋ฆฌ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๊ทธ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ํ•œ์ž๋ฆฌ์”ฉ ์ „๋ถ€ ์ด๋™ํ•˜์—ฌ ์ฑ„์šด๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•  ๊ฒฝ์šฐ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ๋น„์ถ”์ฒœํ•œ๋‹ค.

 

 

๐Ÿค” ArrayList ๋Š” ์•Œ์•„์„œ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚ ๊นŒ?

์•„๋‹ˆ๋‹ค
๋งŒ์•ฝ ๊ธธ์ด๊ฐ€ 10์ด๊ณ  10๊ฐœ์˜ ์š”์†Œ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ArrayList์—์„œ 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ
์ž๋™์œผ๋กœ ๊ธธ์ด๊ฐ€ 11์ธ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ถ”๊ฐ€ํ•  ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์ถ”๊ฐ€ํ•œ ํ›„ ๋ฐ˜ํ™˜๋œ๋‹ค.

๋”ฐ๋ผ์„œ
์ด๋Ÿฌํ•œ ์ผ์ด ๋งค๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ๋ฐ˜ ๊ธธ์ด๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ์žก์•„ ๋‘๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

 

 

๐Ÿ” ArrayList ์˜ˆ์ œ

โ—พ ์ •์˜
ArrayList list = new ArrayList();
List list1 = new ArrayList();โ€‹

๐Ÿ‘‰ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

      List๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์ค‘์— ๋ณ€ํ™˜์ด ์ž์œ ๋กœ์›Œ ์ข‹๋‹ค.

      ํ˜„์žฌ Jeneric์„ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ํƒ€์ž…์ด๋“  ๋‹ค ๋“ค์–ด๊ฐ„๋‹ค.(Object)


โ—พ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์ถœ๋ ฅ

list1.add("ํ™๊ธธ๋™");
		list1.add(123.456);
		list1.add(new Car("pink"));

		System.out.println(list1.toString());

โ—พ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

System.out.println(list1.get(1));

๐Ÿ‘‰ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค 1 ๋ฒˆ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.


โ— ์ด๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์€ Object์ด๋‹ค ๋”ฐ๋ผ์„œ ํŠน์ • ํƒ€์ž…์— ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅํ•  ๊ฒฝ์šฐ

double d = (double)list1.get(1);

๐Ÿ‘‰ ํ˜• ๋ณ€ํ™˜์„ ํ•˜์—ฌ ๋‹ด์•„์ฃผ๋„๋ก ํ•œ๋‹ค.


โ—พ ํฌ๊ธฐ ํ™•์ธ ๋ฐ ์šฉ๋Ÿ‰ ๋ณ€๊ฒฝ

  • size() : ๊ธธ์ด ํ™•์ธ
  • ensureCapacity() : ์šฉ๋Ÿ‰ ๋ณ€๊ฒฝ
System.out.println(list1.size());// ๊ธธ์ด ํ™•์ธ : 3

//์šฉ๋Ÿ‰ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ArrayList๋กœ ๊ตฌํ˜„
ArrayList list2 = new ArrayList();
list1.ensureCapacity(20);โ€‹

โ— ์šฉ๋Ÿ‰์€ ArrayList์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

โ“ List ์šฉ๋Ÿ‰์ด๋ž€
์ž ์žฌ์ ์œผ๋กœ ๊ทธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์žฌ ํ• ๋‹น ํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ์š”์†Œ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

โ—พ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •

  • set : ์ˆ˜์ •
  • add : ์ถ”๊ฐ€
list1.set(0, 20);โ€‹

๐Ÿ‘‰ index 0๋ฒˆ์— ๊ฐ’์„ 20์œผ๋กœ ์ˆ˜์ •

list1.add(100);   //๋งจ ๋’ค์ชฝ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
list1.add(2,200); //2๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

 

 

 

 

 

 

 

 

๐Ÿ”นLinkedList

 

โœ”๏ธ LinkedList์˜ ํŠน์ง•

ArrayList๋Š” ๋ฐ์ดํ„ฐ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ๋ณด์™„ํ•˜์—ฌ ํƒ„์ƒํ•˜์˜€๋‹ค.
 

๋…ธ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์ด๋ฉฐ,
์š”์†Œ๋Š” ๊ฐ ์•ž๋’ค๋กœ ๋‹ค์Œ ์š”์†Œ์™€ ๋’ค์— ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

๋ฐ์ดํ„ฐ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค.

 

 

โœ”๏ธ LinkedList์˜ ๋‹จ์ 

์—ฐ์†์œผ๋กœ ๋‚˜์—ด๋œ ArrayList์™€๋Š” ๋‹ฌ๋ฆฌ LinkedList๋Š” ์ฃผ์†Œ๋กœ ์ด์–ด์ง„ ๋น„์—ฐ์†์ ์ธ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์—
๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๊ฐœ์ˆ˜๊ฐ€ ์ ์  ๋งŽ์•„์งˆ๊ฒฝ์šฐ ์ ‘๊ทผ ์‹œ๊ฐ„์ด ์ ์  ๊ธธ์–ด์ง„๋‹ค.

 

๐Ÿ” LinkedList ์˜ˆ์ œ

โ—พ ArrayList์™€ ๊ฑฐ์˜ ๋™
List<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("kiwi");

 

 

 

๐Ÿค” ArrayList ์™€ LinkedList ๋Š” ๊ฐ๊ฐ ์–ด๋–ค ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ• ๊นŒ?

๋น„๊ต ArrayList  LinkedList
์ˆœ์ฐจ์  ์ถ”๊ฐ€ ๋งค์šฐ ๋น ๋ฆ„ ๋น ๋ฆ„
์ค‘๊ฐ„์— ์ถ”๊ฐ€ ๋งค์šฐ ๋А๋ฆผ ๋งค์šฐ ๋น ๋ฆ„
์•ž์—์„œ๋ถ€ํ„ฐ ์‚ญ์ œ ๋งค์šฐ ๋А๋ฆผ ๋งค์šฐ ๋น ๋ฆ„
๋’ค์—์„œ ๋ถ€ํ„ฐ ์‚ญ์ œ ๋งค์šฐ ๋น ๋ฆ„ ๋น ๋ฆ„

 

 

๐Ÿ‘‰ ArrayList

  • ๋ฐ์ดํ„ฐ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ or ๋‹จ์ˆœํžˆ ๋์—๋งŒ ์ €์žฅํ•  ๊ฒฝ์šฐ
  • ์กฐํšŒํ•ด์•ผํ•  ์ผ์ด ๋งŽ์„ ๊ฒฝ์šฐ

๐Ÿ‘‰ LinkedList

  • ๋ฐ์ดํ„ฐ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ผ์ด ์ ์€ ๊ฒฝ์šฐ