본문으로 건너뛰기
김신건의 로그

[Java] Queue

· 수정 · 📖 약 1분 · 356자/단어 #java #collection #queue #interface #fifo
Queue, java.util.Queue, Java Queue, Queue interface, 큐

정의

java.util.Queue<E>FIFO (First-In, First-Out) 처리 순서를 가진 Collection 인터페이스. 한쪽 끝 (tail) 에 추가하고 반대쪽 (head) 에서 제거하는 자료구조.

PriorityQueue 처럼 다른 순서 (heap) 인 구현체도 있지만, 인터페이스 자체는 “원소를 꺼내는 순서를 정의” 정도의 추상.

두 그룹의 메서드

각 동작마다 예외를 던지는 버전특수값을 반환하는 버전 이 있다.

동작예외 throw특수값
insertadd(e)offer(e)
removeremove()poll()
examineelement()peek()
  • add / remove / element: 큐가 가득 차거나 비어 있을 때 예외
  • offer / poll / peek: 같은 상황에서 false, null 반환

대부분의 코드에서는 null/false 반환 버전이 안전 하다. add 가 가득 찰 때 던지는 예외를 제대로 처리하는 코드는 흔치 않다.

구현체

구현백킹특징
LinkedList양방향 연결 리스트가장 단순한 unbounded queue
ArrayDeque원형 배열빠른 deque, 권장
PriorityQueue우선순위 순으로 꺼냄
ConcurrentLinkedQueuelinked list (lock-free)thread-safe, unbounded
BlockingQueue 구현체다양가득/비어 있으면 block

Deque 와의 관계

Queue 의 확장 Deque (Double-Ended Queue) 는 양 끝 모두에서 add/remove 가능. ArrayDeque, LinkedList 등이 Deque 를 구현.

Queue<E> q = new ArrayDeque<>() 처럼 인터페이스 타입을 Queue 로 잡으면 FIFO 만의 약속을 사용한다.

참고

이 글의 용어 (9개)
[Java] ArrayDequejava
정의 는 원형 배열 (circular buffer) 기반의 구현. JDK 1.6 도입. 으로 쓰면 보다 빠르고, 로 쓰면 보다 빠르다. Stack / Queue / Deque 가…
[Java] BlockingQueuejava
정의 는 요소를 가져올 때 비어 있으면 대기, 넣을 때 가득 차 있으면 대기 하는 thread-safe 큐 인터페이스. 생산자-소비자 (producer-consumer) 패턴의 …
[Java] Collectionjava
정의 는 그룹으로 묶인 객체들을 표현하는 최상위 인터페이스. JCF (Java Collections Framework) 의 입구이자, / / / 모두 이를 확장한다. 자체는 직접…
[Java] ConcurrentLinkedQueuejava
정의 는 lock-free 로 구현된 unbounded thread-safe . Michael & Scott 의 non-blocking queue 알고리즘 (1996) 기반. 가…
[Java] Iterablejava
정의 는 루프로 순회 가능한 모든 타입의 최상위 인터페이스. 단 하나의 추상 메서드, 를 정의한다. 인터페이스가 을 extends 하므로 , , , 등 모든 컬렉션이 자동으로 대…
[Java] LinkedListjava
정의 는 양방향 연결 리스트 (doubly linked list) 로 구현된 이자 . 각 원소는 와 포인터를 가진 노드로 보관된다. 와 같은 List 이지만, 메모리 레이아웃과 …
[Java] Objectjava
정의 는 Java 의 모든 클래스의 최상위 부모 (root) 클래스. 가 명시되지 않은 클래스는 컴파일러가 자동으로 를 붙인다. 인터페이스는 클래스가 아니라 를 직접 상속하지는 …
[Java] PriorityQueuejava
정의 는 이진 힙 (binary heap) 기반의 구현. FIFO 가 아닌 우선순위 순서 로 원소를 꺼낸다. 기본은 min-heap, 의 자연 순서나 로 우선순위 결정. 가장 작…
덱 (Deque)algorithm
정의 Deque (덱, double-ended queue) 는 양쪽 끝에서 O(1) push/pop 이 가능한 선형 자료구조. 큐 + 스택의 일반화. 내부 구현은 대개 chunk…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기