Notice
Recent Posts
Link
Today
Total
01-27 20:29
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

[JAVA ] List Interface ๋ณธ๋ฌธ

๐ŸฐJAVA/Basic

[JAVA ] List Interface

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 6. 20. 12:57

๋ฆฌ์ŠคํŠธ์˜ ์ƒ์œ„ ๊ฐœ๋…์ธ Collection์— ๋Œ€ํ•ด ๋จผ์ € ๋ณด๊ณ  ์˜ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

[JAVA ] Collection

Collection Framework ? • ๊ฐ์ฒด์˜ ๊ทธ๋ฃน • ์ž๋ฐ”์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. •  Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” List, Set, Queue ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ™•์žฅ๋˜๋Š” ๋ฃจํŠธ ์ธํ„ฐํŽ˜์ด์Šค •  Java์—์„œ๋Š” ๋ชจ๋“  Collecti..

dodokwon.tistory.com

LIST INTERFACE

    •  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š”(์œ ์ง€๋˜๋Š”) ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

        ex) Vector, ArrayList, LinkedList, Stack, Queue

1. ArrayList 

 ๋‚ด๋ถ€์ ์œผ๋กœ Array๋ฅผ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— Index๋ฅผ ์ด์šฉํ•ด ์š”์†Œ์— ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    - ์กฐํšŒ ์„ฑ๋Šฅ Good, ๋‹จ๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ

 ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์€ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ( ์ƒˆ ๋ฐฐ์—ด ์ƒ์„ฑ ํ›„ ๊ธฐ์กด ์š”์†Œ ์˜ฎ๊ธฐ๊ธฐ ) 

 ์ด๋Š” ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์ž‘์—… ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        ArrayList<Integer> al = new ArrayList<Integer>();

        for (int i = 1; i <= 5; i++)
            al.add(i);
        System.out.println(al);
  
        al.remove(3);
        System.out.println(al);
  
        for (int i = 0; i < al.size(); i++)
            System.out.print(al.get(i) + " ");
    }
}
[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5

2. LinkedList

 ๋‚ด๋ถ€์ ์œผ๋กœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 ์ €์žฅ๋œ ์š”์†Œ๋Š” ๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ถ„ํฌ๋˜๋ฉฐ Link๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. 

    -  ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ์œ„์น˜ ์ •๋ณด๋งŒ ์ˆ˜์ •ํ•˜๋ฏ€๋กœ ์œ ์šฉ, ์–‘๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ

 ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ - ๋‹ค์Œ ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ ๊ฐ€์ง€๋Š” ๋ฆฌ์ŠคํŠธ, ์ด์ „ ์š”์†Œ๋กœ ์ ‘๊ทผ์ด ์–ด๋ ต๋‹ค.

 ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ - ๋‹ค์Œ์š”์†Œ์™€ ์ด์ „์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋‘˜ ๋‹ค ๊ฐ€์ง€๋Š” ๋ฆฌ์ŠคํŠธ 

 

์ด์— ๋Œ€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ๊ฐ€ ์žˆ์–ด ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

[์ž๋ฃŒ๊ตฌ์กฐ] ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List): ๋‹จ์ผ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ๋…๊ณผ ๊ตฌํ˜„

velog.io

class GFG {
    public static void main(String[] args){
  
        LinkedList<Integer> ll = new LinkedList<Integer>();

        for (int i = 1; i <= 5; i++)
            ll.add(i);
  
        System.out.println(ll);
  
        ll.remove(3);
  
        System.out.println(ll);
  
        for (int i = 0; i < ll.size(); i++)
            System.out.print(ll.get(i) + " ");
    }
}
[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5

3.  Vector

•  ArrayList ํด๋ž˜์Šค์™€ ๊ฐ™์€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํด๋ž˜์Šค๋กœ List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

•  ArrayList์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ฑฐ์˜ ๊ฐ™์œผ๋ฉฐ ํ˜„์žฌ๋Š” ๊ธฐ์กด์ฝ”๋“œ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด์„œ๋งŒ ๋‚จ์•˜์œผ๋ฏ€๋กœ ArrayList ํด ๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ž.


๋จผ์ € ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” Stack๊ณผ Queue์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์˜ค๋ฉด ์ข‹์„ ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ™‚  ์Šคํƒ, ํ ๊ฐœ๋…/๋น„๊ต/ํ™œ์šฉ์˜ˆ์‹œ

 

** ์ž๋ฃŒ๊ตฌ์กฐ : ์ž๋ฃŒ(Data)์˜ ์ง‘ํ•ฉ์ด์ž, ์ €์žฅ๊ณต๊ฐ„(Memory)์—  ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜๋œ ๊ทœ์น™์— ๋”ฐ๋ผ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œํ˜„ํ•œ ๊ฒƒ.

 

** ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ : ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Big-O ๊ฐœ๋…๊ณผ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋” ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค. 

4. Stack

•  ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด์„œ LIFO (Last In First Out)์˜ ์‹œ๋ฉ˜ํ‹ฑ์„ ๋”ฐ๋ฅด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

•  ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ €์žฅ๋œ( push ) ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ธ์ถœ( pop )๋˜๋Š” ๊ตฌ์กฐ 

•  Vector์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ์ƒ์†๋ฐ›์•„ ์ „ํ˜•์ ์ธ ์Šคํ… ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ํด๋ž˜์Šค ์ œ๊ณต

import java.util.*;
public class GFG {
    public static void main(String args[])
    {
        Stack<String> stack = new Stack<String>();
        stack.push("Geeks");
        stack.push("For");
        stack.push("Geeks");
        stack.push("Geeks");
  
        Iterator<String> itr = stack.iterator();

        while (itr.hasNext()) {
            System.out.print(itr.next() + " ");
        }
  
        System.out.println();
  
        stack.pop();

        itr = stack.iterator();
  
        while (itr.hasNext()) {
            System.out.print(itr.next() + " ");
        }
    }
}
Geeks For Geeks Geeks 
Geeks For Geeks

 

** ๊ด€๋ จ ๋ฉ”์„œ๋“œ **

 

boolean empty() ํ•ด๋‹น ์Šคํƒ์ด ๋น„์–ด ์žˆ์œผ๋ฉด true๋ฅผ, ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
E peek() ํ•ด๋‹น ์Šคํƒ์˜ ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(์ œ์ผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
E pop() ํ•ด๋‹น ์Šคํƒ์˜ ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(์ œ์ผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ์š”์†Œ๋ฅผ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•จ.
E push(E item) ํ•ด๋‹น ์Šคํƒ์˜ ์ œ์ผ ์ƒ๋‹จ์— ์ „๋‹ฌ๋œ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•จ.
int search(Object o) ํ•ด๋‹น ์Šคํƒ์—์„œ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
์ด๋•Œ ์ธ๋ฑ์Šค๋Š” ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(์ œ์ผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ์˜ ์œ„์น˜๋ถ€ํ„ฐ 0์ด ์•„๋‹Œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ.

5. Queue

•  ํ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด์„œ FIFO (First In First Out)์˜ ์‹œ๋ฉ˜ํ‹ฑ์„ ๋”ฐ๋ฅด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

•  ๊ฐ€์žฅ ๋จผ์ € ์ €์žฅ๋œ( push ) ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ธ์ถœ( pop )๋˜๋Š” ๊ตฌ์กฐ 

•  ํ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ์ƒ๋‹นํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ Deque ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ LinkedList ํด๋ž˜์Šค๊ฐ€ ํ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

 

** ๊ด€๋ จ ๋ฉ”์„œ๋“œ **

 

boolean add(E e) ํ•ด๋‹น ํ์˜ ๋งจ ๋’ค์— ์ „๋‹ฌ๋œ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•จ.
๋งŒ์•ฝ ์‚ฝ์ž…์— ์„ฑ๊ณตํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ์— ์—ฌ์œ  ๊ณต๊ฐ„์ด ์—†์–ด ์‚ฝ์ž…์— ์‹คํŒจํ•˜๋ฉด IllegalStateException์„ ๋ฐœ์ƒ์‹œํ‚ด.
E element() ํ•ด๋‹น ํ์˜ ๋งจ ์•ž์— ์žˆ๋Š”(์ œ์ผ ๋จผ์ € ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
boolean offer(E e) ํ•ด๋‹น ํ์˜ ๋งจ ๋’ค์— ์ „๋‹ฌ๋œ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•จ.
E peek() ํ•ด๋‹น ํ์˜ ๋งจ ์•ž์— ์žˆ๋Š”(์ œ์ผ ๋จผ์ € ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
๋งŒ์•ฝ ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•จ.
E poll() ํ•ด๋‹น ํ์˜ ๋งจ ์•ž์— ์žˆ๋Š”(์ œ์ผ ๋จผ์ € ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ์š”์†Œ๋ฅผ ํ์—์„œ ์ œ๊ฑฐํ•จ.
๋งŒ์•ฝ ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•จ.
E remove() ํ•ด๋‹น ํ์˜ ๋งจ ์•ž์— ์žˆ๋Š”(์ œ์ผ ๋จผ์ € ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•จ.

 

ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๋งํฌ๋ฅผ  ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

์ฐธ์กฐ ๋ฐ ์ถœ์ฒ˜

Collections in Java

Stack๊ณผ Queue

List ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค

 

'๐ŸฐJAVA > Basic' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ JAVA ] Garbage Collection  (0) 2022.07.01
[JAVA ] Set Interface  (0) 2022.06.28
[JAVA ] Collection  (0) 2022.06.20
[ JAVA ] Optional  (0) 2022.06.15
[ JAVA ] Lambda  (0) 2022.06.14
Comments