Post

๐Ÿ’š ์ž๋ฃŒ๊ตฌ์กฐ - ArrayList, LinkedList ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’š ์ž๋ฃŒ๊ตฌ์กฐ - ArrayList, LinkedList ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

10) ์ž๋ฃŒ๊ตฌ์กฐ - ArrayList, LinkedList

List

์–ด๋–ค ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ

  • ArrayList, LinkedList๊ฐ€ ์žˆ์Œ.

ex) ์˜ฌ๋ฆผํ”ฝ์—์„œ ๋งˆ๋ผํ†ค์„ ํ–ˆ์„ ๋•Œ, 1๋“ฑ๋ถ€ํ„ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ญ‰ ์ €์žฅ

ArrayList

์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ž๋ฃŒ ๊ตฌ์กฐ

1

๋งŒ์•ฝ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ 4, 12, 5, 43, 28, 31, 24 ๊ฐ€ ๋‚˜์™”๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ

ArrayList์˜ ์žฅ์  : indexing์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด idx[4] = 28์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ์ฝ๊ธฐ์™€ ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค.

ArrayList์˜ ๋‹จ์  : ์ถ”๊ฐ€ / ์‚ญ์ œ๊ฐ€ ์–ด๋ ต๋‹ค.

  • ๋งŒ์•ฝ idx[2]๋ฅผ ์‚ญ์ œํ•œ๋‹ค๋ฉด ๋’ค์˜ ์ˆซ์ž๋“ค์ด ํ•œ ์นธ์”ฉ ์•ž์œผ๋กœ ์™€์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

  • ์ฆ‰, ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ๋Š” ๋ฐฐ์—ด์„ ์žฌ๋ฐฐ์—ด ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ  ์ค‘๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋นˆ ๊ณต๊ฐ„์ด ๋‚จ๊ฒŒ๋˜์–ด ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ArrayList๋Š” ๋‚ด๋ถ€์—์„œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ดˆ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ๋ฐฐ์—ด์ด ๊ฝ‰ ์ฐจ๋ฉด ์ƒˆ๋กœ์šด ๋” ํฐ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ ํ›„ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ํ™•์žฅํ•œ๋‹ค.

์ฆ‰, ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์„œ ๋งŒ์•ฝ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ๋ ค๋ฉด ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ ค์•ผ ๋œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        // ArrayList ์„ ์–ธ
        ArrayList<String> arrayList = new ArrayList<>();

        // ์š”์†Œ ์ถ”๊ฐ€
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");
        System.out.println("ArrayList after additions: " + arrayList);

        // ํŠน์ • ์œ„์น˜์— ์š”์†Œ ์ถ”๊ฐ€
        arrayList.add(1, "Orange"); // 1๋ฒˆ์งธ ์œ„์น˜์— "Orange" ์ถ”๊ฐ€
        System.out.println("ArrayList after inserting 'Orange' at index 1: " + arrayList);

        // ์š”์†Œ ์‚ญ์ œ
        arrayList.remove("Banana"); // "Banana" ์‚ญ์ œ
        System.out.println("ArrayList after removing 'Banana': " + arrayList);

        // ์ธ๋ฑ์Šค๋กœ ์š”์†Œ ์‚ญ์ œ
        arrayList.remove(1); // ์ธ๋ฑ์Šค 1์— ์žˆ๋Š” ์š”์†Œ ์‚ญ์ œ
        System.out.println("ArrayList after removing element at index 1: " + arrayList);

        // ์š”์†Œ ์ˆ˜์ •
        arrayList.set(0, "Mango"); // 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ "Mango"๋กœ ๋ณ€๊ฒฝ
        System.out.println("ArrayList after setting 'Mango' at index 0: " + arrayList);

        // ํŠน์ • ์š”์†Œ ์ฐพ๊ธฐ
        boolean containsCherry = arrayList.contains("Cherry");
        System.out.println("Contains 'Cherry': " + containsCherry);

        // ๋ฆฌ์ŠคํŠธ ํฌ๊ธฐ ํ™•์ธ
        int size = arrayList.size();
        System.out.println("ArrayList size: " + size);

        // ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
        boolean isEmpty = arrayList.isEmpty();
        System.out.println("Is ArrayList empty: " + isEmpty);
    }
}

LinkedList

๋น„์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

๋…ธ๋“œ์™€ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•œ ๋™์  ์ž๋ฃŒ ๊ตฌ์กฐ

1

๊ฐ ๋…ธ๋“œ๊ฐ€ ์žˆ๊ณ  ์ขŒ์ธก์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด๊ณ  ์šฐ์ธก์€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ(Next) ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ArrayList๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋™์  ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ํฌ์ธํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด ArrayList์ฒ˜๋Ÿผ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

LinkedList ์žฅ์  : ์ถ”๊ฐ€ / ์‚ญ์ œ๊ฐ€ ์‰ฝ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์„ ์˜ˆ๋ฅผ ๋“ค์–ด B์™€ C ์‚ฌ์ด G๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ ์‰ฝ๊ฒŒ A -> B -> G -> C -> D๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

LinkedList ๋‹จ์  : ์œ„์น˜๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒŒ ArrayList์— ๋น„ํ•ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

  • ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋…ธ๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฝ๊ธฐ์™€ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ArrayList๋ณด๋‹ค ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๊ฒƒ!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        // LinkedList ์„ ์–ธ
        LinkedList<String> linkedList = new LinkedList<>();

        // ์š”์†Œ ์ถ”๊ฐ€
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");
        System.out.println("LinkedList after additions: " + linkedList);

        // ์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰์— ์š”์†Œ ์ถ”๊ฐ€
        linkedList.addFirst("Orange"); // ๋งจ ์•ž์— "Orange" ์ถ”๊ฐ€
        linkedList.addLast("Mango"); // ๋งจ ๋’ค์— "Mango" ์ถ”๊ฐ€
        System.out.println("LinkedList after addFirst and addLast: " + linkedList);

        // ์š”์†Œ ์‚ญ์ œ
        linkedList.remove("Banana"); // "Banana" ์‚ญ์ œ
        System.out.println("LinkedList after removing 'Banana': " + linkedList);

        // ์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰ ์š”์†Œ ์‚ญ์ œ
        linkedList.removeFirst(); // ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ์‚ญ์ œ
        linkedList.removeLast(); // ๋งˆ์ง€๋ง‰ ์š”์†Œ ์‚ญ์ œ
        System.out.println("LinkedList after removeFirst and removeLast: " + linkedList);

        // ํŠน์ • ์œ„์น˜์˜ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
        String element = linkedList.get(1); // ์ธ๋ฑ์Šค 1์— ์žˆ๋Š” ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
        System.out.println("Element at index 1: " + element);

        // ํŠน์ • ์œ„์น˜์— ์š”์†Œ ์ถ”๊ฐ€
        linkedList.add(1, "Strawberry"); // 1๋ฒˆ์งธ ์œ„์น˜์— "Strawberry" ์ถ”๊ฐ€
        System.out.println("LinkedList after inserting 'Strawberry' at index 1: " + linkedList);

        // ๋ฆฌ์ŠคํŠธ ํฌ๊ธฐ ํ™•์ธ
        int size = linkedList.size();
        System.out.println("LinkedList size: " + size);

        // ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
        boolean isEmpty = linkedList.isEmpty();
        System.out.println("Is LinkedList empty: " + isEmpty);
    }
}

This post is licensed under CC BY 4.0 by the author.