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