[자료구조] 큐(Queue) 사용

정원석·2023년 11월 5일

Queue의 특징

  1. 선입선출(FIFO) 방식이다.
  2. 큐는 한쪽은 front로 정하여 삭제 연산만 수행한다.
  3. 다른 한쪽은 rear로 정하여 삽입 연산만 수행한다.

Queue 선언

import java.util.LinkedList; 
import java.util.Queue; 
Queue<Integer> queue = new LinkedList<>(); //int형
Queue<String> queue = new LinkedList<>(); //String형

자바에서 큐는 linkedlist로 생성하기 때문에 import에 queue와 linkedlist 모두 선언해 주어야 한다.

Queue값 추가

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가

큐에 값을 추가하려면 add(value) 혹은 offer(value)를 사용하면 된다. add(value) 의 경우 삽입에 성공하면 true를 반환하고, 큐에 여유공간이 없어 실패하면 IllegalStateException을 발생시킨다. 큐에 삽입하는 과정은 다음과 같다.

Queue값 삭제

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화

큐에 값을 삭제하려면 poll() 혹은 remove()를 사용한다. poll()은 큐가 비어있으면 null을 반환한다. pop을 하면 가장 앞쪽의 원소의 값이 다음과 같이 제거된다. queue의 모든 값을 제거하려면 clear()를 사용하면 된다.

Queue 사용예시

import java.io.*;
import java.util.LinkedList;
import java.util.Queue;

public class practice {
  public static void main(String[] args) {
      Queue<Integer> queue = new LinkedList<>(); //int형

      queue.add(1122);
      queue.add(3344);
      queue.add(5566);
      queue.add(7788);
      queue.add(9900);
      System.out.println(queue);

      queue.poll(); //맨 앞의 값 삭제
      System.out.println(queue); 

      queue.remove(); //맨 앞의 값 삭제
      System.out.println(queue);

      queue.remove(7788);//해당하는 값 삭제
      System.out.println(queue);

      queue.add(1122);
      System.out.println(queue);
  }

}

참고 : https://coding-factory.tistory.com/602

profile
Back-End-Dev

0개의 댓글