본문 바로가기

Language

[Java] Queue 자료형

728x90

Queue 란?

Queue는 선입선출(FIFO, First In First Out)방식의 자료형입니다. 먼저 입력되는 데이터가 먼저 나가는 구조로 되어있습니다.

일반적인 줄서기와 동일하다고 보시면 됩니다.

Queue 종류

// 기본 인터페이스
import java.util.Queue;

// LinkedList
import java.util.LinkedList;

// PriorityQueue
import java.util.PriorityQueue;

Java에서 Queue는 Interface로 정의되어있습니다.

기본적으로는 LinkedList를 활용하여 Queue를 사용하고 있습니다.

만약 내부적 정렬이 필요한 경우에는 PriorityQueue를 사용하고 있습니다.

(예 : Queue에 입력된 데이터를 내림차순으로 정렬하여 추출)

// 문자열을 데이터로 하는 Queue
Queue<String> queue = new LinkedList<String>();

// 숫자를 데이터로 하는 Queue, 숫자는 오름차순으로 정렬
Queue<Integer> queue = new PriorityQueue<Integer>((a,b) -> a - b);

데이터 입력

queue.add("test");

queue.offer("test");

Queue에는 데이터를 입력하는 addoffer 함수가 제공됩니다.

둘간의 차이는 Queue에 사이즈를 초과하여 입력이 불가할 경우

  • add() 함수는 IllegalStateException을 발생시킵니다.
  • offer() 함수는 false를 반환합니다. 용량제한이 있는 Queue를 사용할 경우 이 함수를 선호합니다.

데이터 추출

// 첫번째 데이터 추출
queue.poll();

// 첫번째 데이터 추출, 없으면 NoSuchElementException 발생
queue.remove();

// 첫번째 데이터 조회, 추출은 하지않음
queue.peak();

Queue에서 데이터를 추출하는 poll, remove, peak 함수가 제공됩니다.

차이는 다음과 같습니다.

  • poll() 함수는 첫번째 데이터를 추출(큐에서 삭제)하며 데이터가 없으면 null을 반환합니다.
  • remove() 함수는 첫번째 데이터를 추출(큐에서 삭제)하며 데이터가 없으면 NoSuchElementException을 발생시킵니다.
  • peak() 함수는 첫번째 데이터를 조회하며 큐에서 삭제하지 않습니다. 데이터가 없으면 null을 반환합니다.
반응형