큐(Queue)

    728x90
    반응형

    2022.04.24

    93번째 포스팅

     

     

    0. Queue?

      ① 선입선출(FIFO)의 자료구조. 대기열이라고도 한다.

      ② Queue에 자료를 추가하는 것을 EnQueue라고 하고 반대로 넣어둔 자료를 꺼내는 것을 DeQueue라고 한다.

      ③ 데이터가 들어오는 위치는 가장 뒤(Rear 또는 Back이라고 한다.)에 있고, 데이터가 나가는 위치는 가장 앞(Front라고 한다.)에 있어서, 먼저 들어오는 데이터가 먼저 나가게 된다.

     

     

    1. 선언 및 초기화

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package develog;
     
    import java.util.LinkedList;
    import java.util.Queue;
     
    public class Develog {
        public static void main(String[] args) {
     
            /*
             * 큐의 선언 및 초기화
             * 1. <>안의 Object에는 사용하고 싶은 클래스 혹은 Wrapper클래스를 적어준다.
             * 2. Queue는 Collection을 상속받은 인터페이스
             * 3. 인스턴스 생성 시, LinkedList로 선언해주어야 한다.
             */
            Queue<Object> queue = new LinkedList<>();
        }
    }
    cs

     

     

    2. 구조

      ① Queue는 Collection을 상속받은 인터페이스다.

      ② Collection은 List, Set 등에서 사용하는 add(), clear(), remove() 등의 메소드를 가지고 있다.

     

     

    3. 메소드

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    package develog;
     
    import java.util.LinkedList;
    import java.util.Queue;
     
    public class Develog {
        public static void main(String[] args) {
     
            Queue<Object> queue = new LinkedList<>();
            
            /*
             * isEmpty()
             * 1. queue가 비어있으면 true를 리턴
             * 2. 그 반대의 경우 false를 리턴
             */
            queue.isEmpty();
            
            /*
             * peek()
             * 1. FIFO구조에 맞게 front의 값을 출력
             * 2. 단순 출력만 하므로, front의 값을 출력 후 삭제하지 않음
             */
            queue.peek();
            
            /*
             * poll()
             * 1. FIFO구조에 맞게 front의 값을 출력
             * 2. 값을 출력하는 동시에 삭제
             * 3. front가 가리키던 node의 value가 새로운 front가 됨
             */
            queue.poll();
            
            /*
             * add(Object)
             * 1. queue에 값을 추가
             * 2. FIFO구조에 맞게 가장 마지막에 입력된 값이 rear가 됨
             */
            queue.add(new Object());
            
            /*
             * clear()
             * 1. queue의 값들을 비워줌
             * 2. queue의 메모리가 제거되는 것은 아님
             * 3. clear() 메소드는 for문을 돌면서 queue의 node와 value들을 차례대로 제거함
             */
            queue.clear();
            
            /*
             * size();
             * 1. queue에 들어있는 값들의 갯수를 리턴
             */
            queue.size();
        }
    }
    cs
    728x90
    반응형

    '백엔드 > 자료구조' 카테고리의 다른 글

    스택(Stack)  (0) 2022.04.21

    댓글