๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

01/23(ํ™”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 22์ผ์ฐจ TIL - List

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 1. 23.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • LinkedList
  • ArrayList

 

๐Ÿฅ”  List ๋ž€?

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

List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ArrayList, Vector, LinkedList, Stack ๋“ฑ์ด ์žˆ์ง€๋งŒ,
๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ArrayList, LinkedList๊ฐ€ ์žˆ๋‹ค.

 

  • ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ง•
  • ์ˆœ์„œ๊ฐ€ ์žˆ๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉ
  • ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์       

 

 

๐Ÿฅ”  List ์ธํ„ฐํŽ˜์ด์Šค

List ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ

add(int index, Object element)

- ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€

 

set(int index, Object element)

- ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ๊ฐ์ฒด๋ฅผ ์ €์žฅ. Object ํƒ€์ž…์„ ๋ฆฌํ„ด

 

indexOf(Object o) / lastIndex(Object o)

- ์ˆœ๋ฐฉํ–ฅ / ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜. int ํƒ€์ž…์„ ๋ฆฌํ„ด

 

remove(int index)

- ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ. ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜. Object ํƒ€์ž…์„ ๋ฆฌํ„ด

 

 

๐Ÿฅ”  ArrayList

List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋กœ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

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

 

ArrayList์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค.

ํŠน์ • ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด, ๋ฐ”๋กœ ๋’ค ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋ชจ๋‘ ์•ž์œผ๋กœ 1์”ฉ ๋‹น๊ฒจ์ง„๋‹ค.

 

์ €์žฅํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ, ์ž‘์—… ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ,

์ค‘๊ฐ„์— ์œ„์น˜ํ•œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ ์ด๋™์ด ๋งŽ์œผ๋ฏ€๋กœ ์†๋„๊ฐ€ ์ €ํ•˜๋œ๋‹ค.

 

๋ฐ˜๋ฉด, ์ธ๋ฑ์Šค๋กœ ๋ฐ์ดํ„ฐ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์ธก๋ฉด์—์„œ๋Š” ์œ ๋ฆฌํ•˜๋‹ค.

ArrayList<๋งค๊ฐœ๋ณ€์ˆ˜> ๊ฐ์ฒด๋ช… = new ArrayList<๋งค๊ฐœ๋ณ€์ˆ˜>(์ดˆ๊ธฐ ์ €์žฅ ์šฉ๋Ÿ‰);
// ArrayList๋Š” ์ดˆ๊ธฐ ์šฉ๋Ÿ‰์„ ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ 10์œผ๋กœ ์ง€์ •๋จ

 

// ArrayList 
// (์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  import java.util.ArrayList; ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.)
import java.util.ArrayList;

public class Main {

	public static void main(String[] args) {
		ArrayList<Integer> intList = new ArrayList<Integer>(); // ์„ ์–ธ ๋ฐ ์ƒ์„ฑ
		
		intList.add(1);
		intList.add(2);
		intList.add(3);
		
		System.out.println(intList.get(0)); // 1 ์ถœ๋ ฅ
		System.out.println(intList.get(1)); // 2 ์ถœ๋ ฅ
		System.out.println(intList.get(2)); // 3 ์ถœ๋ ฅ
		System.out.println(intList.toString()); // [1,2,3] ์ถœ๋ ฅ
		
		intList.set(1, 10); // 1๋ฒˆ์ˆœ๋ฒˆ์˜ ๊ฐ’์„ 10์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(intList.get(1)); // 10 ์ถœ๋ ฅ
		
		
		intList.remove(1); // 1๋ฒˆ์ˆœ๋ฒˆ์˜ ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(intList.toString()); // [1,3] ์ถœ๋ ฅ
		
		intList.clear(); // ์ „์ฒด ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(intList.toString()); // [] ์ถœ๋ ฅ
	}
}

 

โ—๏ธ ArrayList ์žฅ์ 

 

๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ

- ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค 0๋ฒˆ๋ถ€ํ„ฐ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ

- ์ˆœ์ฐจ์ ์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์—์„œ๋ถ€ํ„ฐ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ

 

๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒฝ์šฐ

- ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค.

 

 

โ—๏ธ ArrayList ๋‹จ์ 

 

์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ

- ์ถ”๊ฐ€, ์‚ญ์ œ ์‹œ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ๋’ค์— ์œ„์น˜ํ•œ ๊ฐ’๋“ค์„ ๋’ค๋กœ ๋ฐ€๊ฑฐ๋‚˜ ์•ž์œผ๋กœ ๋‹น๊ฒจ์•ผ ํ•œ๋‹ค.

 

๐Ÿฅ”  LinkedList

ArrayList์™€ ๋ฐฐ์—ด์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ, LinkedList์—๋Š” ๋ถˆ์—ฐ์†์ ์œผ๋กœ ์ „์žฌํ•˜๋ฉฐ,
์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. LinkedList ์ปฌ๋ ‰์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

 

LinkedList์˜ ๊ฐ ์š”์†Œ๋“ค์€ ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ด์ „, ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

LinkedList์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด, ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” ์ด์ „ ์š”์†Œ๊ฐ€ ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” ๋‹ค์Œ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ๋ณ€๊ฒฝ๋œ๋‹ค.

๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค.

// LinkedList 
// (์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  import java.util.LinkedList; ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.)
import java.util.LinkedList;

public class Main {

	public static void main(String[] args) {
		LinkedList<Integer> linkedList = new LinkedList<>(); // ์„ ์–ธ ๋ฐ ์ƒ์„ฑ

		linkedList.add(1);
		linkedList.add(2);
		linkedList.add(3);

		System.out.println(linkedList.get(0)); // 1 ์ถœ๋ ฅ
		System.out.println(linkedList.get(1)); // 2 ์ถœ๋ ฅ
		System.out.println(linkedList.get(2)); // 3 ์ถœ๋ ฅ
		System.out.println(linkedList.toString()); // [1,2,3] ์ถœ๋ ฅ (์†๋„ ๋Š๋ฆผ)

		linkedList.add(2, 4); // 2๋ฒˆ ์ˆœ๋ฒˆ์— 4 ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(linkedList); // [1,2,4,3] ์ถœ๋ ฅ

		linkedList.set(1, 10); // 1๋ฒˆ์ˆœ๋ฒˆ์˜ ๊ฐ’์„ 10์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(linkedList.get(1)); // 10 ์ถœ๋ ฅ

		linkedList.remove(1); // 1๋ฒˆ์ˆœ๋ฒˆ์˜ ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(linkedList); // [1,4,3] ์ถœ๋ ฅ

		linkedList.clear(); // ์ „์ฒด ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
		System.out.println(linkedList); // [] ์ถœ๋ ฅ
	}
}

 

โ—๏ธLinkedList ์žฅ์ 

 

์ค‘๊ฐ„์— ์œ„์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ

- ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์— ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „๊ณผ ๋‹ค์Œ์˜ ์ฃผ์†Œ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋ฏ€๋กœ,

๋‹ค๋ฅธ ์š”์†Œ๋“ค์„ ์ด๋™์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

๋”ฐ๋ผ์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์— ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ LinkedList๋Š” ArrayList๋ณด๋‹ค ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์—ฌ์คŒ

๋ฐ์ดํ„ฐ์˜ ์žฆ์€ ๋ณ€๊ฒฝ์ด ์˜ˆ์ƒ๋  ๋• LinkedList, ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋• ArrayList

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

๊ธฐ๋ณธ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ