048_큐(Queue)

Jan 09, 2024
048_큐(Queue)

Queue

  • 데이터를 처리하기 전에 잠시 저장하고 있는 자료구조이다.
  • 큐는 FIFO(first-in-first-out) 형식으로 데이터를 저장한다. → 새로운 원소들이 큐의 끝에 추가된다. → 예외적인 큐는 “우선 순위 큐(priority queues)” 이다.
  • 큐의 인터페이스는 3개의 클래스가 주어진다. → “ArrayDeque”, “LinkedList”, “PriorityQueue”
👉
우선 순위 큐는 원소들을 우선 순위에 따라 저장한다. 기본적인 우선 순위는 원소들의 값이다. 디큐(deque)는 전단과 후단에서 모두 원소를 추가하거나 삭제할 수 있다.

Queue 메서드

  • add() 메서드 → 새로운 원소 추가 시 큐의 용량을 넘지 않으면 원소를 추가한다. → 용량 초과 시 IllegalStateException이 발생
  • offer() 메서드 → 원소 추가에 실패하면 false 반환
  • remove(), poll() 메서드 → 큐의 처음에 있는 원소를 제거하거나 가져온다.
👉
remove() 와 poll()의 차이점! 만약 큐에 원소가 없으면 remove()는 NoSuchElementException 을 발생하고, poll()은 null을 반환한다.
  • element()와 peek() 메서드 → 큐의 처음에 있는 원소를 삭제하지 않고 가져온다.
👉
element() 와 peek()의 차이점! 만약 큐가 비어 있다면 element()는 NoSuchElementException을 발생하고, peek()는 null을 반환한다.

우선 순위 큐

  • 정렬된 상태로 원소들을 추출한다.
  • 우선 순위 큐는 힙(heap)이라는 자료구조를 사용한다.

큐를 사용한 코드

package ex13; import java.util.LinkedList; import java.util.Queue; public class QueueTest { public static void main(String[] args) { Queue<Integer> q = new LinkedList<>(); for (int i = 0; i < 5; i++) { q.add(i); } System.out.println("큐의 요소: " + q); int e = q.remove(); System.out.println("삭제된 요소: " + e); System.out.println(q); } }
Share article

chodong