본문 바로가기

DataStructure

[Java] 큐 (Queue) 자료구조

📌 큐 (Queue)의 개념

  • Queue의 사전적인 의미는 대기줄을 의미한다. 이처럼 줄을 지어 순서대로 처리되는 것이 Queue이다.
  • Queue는 Stack 과는 반대로 First In First Out의 FIFO 즉, 선입선출 구조를 가진다.
  • Queue는 LinkedList를 활용하여 생성해야 합니다. 그렇기에 Queue와 LinkedList가 다 import 되어 있어야 사용이 가능합니다.
  • Queue는 가장 첫 번째 원소를 fornt라고 하고 끝에 있는 원소를 rear라고 한다.
  • 데이터를 넣을 때는 EnQueue, 데이터를 꺼낼 때는 DeQueue라고 한다.

📌 큐(Queue) 사용법

// 선언 방식
Queue<Integer> queue = new LinkedList<>();

// 값 추가
queue.add(1);
queue.offer(2);

// 값 삭제
queue.poll();      
queue.remove();    
queue.clear();

💡 Tip

Queue에 데이터 추가, 삭제, 검색할 때 제공되는 메서드가 비슷한 것들이 있다.
서로 차이점은 기능적으로 차이는 없으나 null을 반환할지, 예외를 발생시키냐의 차이가 있다.
add : 큐가 꽉 찬 경우 IllegalStateException 에러 발생
offer : boolean 반환
remove : 큐가 비어 있는 경우 NoSuchElementException 에러 발생
poll : 큐가 비어있을 경우 null 반환
poll : 큐가 비어있을 경우 null 반환
peek : null 반환