본문 바로가기

Java

[JAVA] Queue의 자료구조의 이해, 구현과 사용법 익히기

1. 큐(Queue)

  1) 선입선출(First In First out; FIFO) 자료구조

    - 먼저 들어온 데이터가 먼저 나가는 구조

  2) 입력 순서대로 데이터 처리가 필요할 때 사용

    - 프린트 출력 대기열, BFS(Breath-First-Search) 등

 

2. 큐 기본 구조

  1) 선입선출 구조를 따름

   2) 기본적으로 데이터 추가, 데이터 꺼내기, 큐 공간 확인 동작으로 이루어짐

3. 큐 기본 연산 (1)

  1) 데이터 추가(Enqueue)

    - 큐에 데이터 추가

3. 큐 기본 연산(2)

  1) 데이터 꺼내기(Dequeue)

    - 큐에서 데이터 꺼내기

4. 큐 구현과 사용법

  1) 큐의 생성과 데이터 생성

 Queue queue = new LinkedList();

        queue.add(1);
        queue.add(2);
        queue.add(3);
        queue.add(4);
        queue.add(5);
        System.out.println(queue);

자바에서 큐는 LinkedList를 활용하여 생성해야 한다. 그래서 QueueLikedList가 다 import 되어있어야 사용이 가능하다. 

 

 2) 데이터 꺼내기

System.out.println(queue.poll());
        System.out.println(queue);

        System.out.println(queue.poll());
        System.out.println(queue);

        // peek은 스택과 마찬가지로 출력만 해주고 데이터를 꺼내진 않는다.
        System.out.println(queue.peek());
        System.out.println(queue);

출력 결과

데이터 꺼내는 방식과 출력은 Stack과 동일하지만 Queue는 먼저 입력된 데이터가 먼저 나간다.

 

3) 그 외에 확인할 수 있는 것들

System.out.println(queue.contains(3));
        System.out.println(queue.size());
        System.out.println(queue.isEmpty());

        queue.clear();
        System.out.println(queue);

출력 결과

Stack과 동일하게 데이터에 3이 있는지와 size를 체크할 수 있고 데이터가 비어있는지 확인과 데이터를 모두 클리어할 수도 있다.

 

4) Stack과 다른 결과

System.out.println(queue.poll());

출력 결과

Stack에서는 빈 공간의 데이터에서 데이터를 꺼내면 에러가 발생했는데 Queue는 빈 공간에 데이터를 꺼낼 때 null로 반환을 시켜주는 차이가 있다.