해당 글에서는 Java 11 버전을 기준으로 Queue 인터페이스를 구현한 클래스인 Queue의 메서드의 API에 대해서 확인합니다.

1) Queue
💡 큐(Queue)란?
- 데이터를 일시적으로 쌓아두기 위한 자료구조 중 하나로 선입선출(FIFO, First-In-First-Out)의 특성을 가집니다.

[ 더 알아보기 ]
💡 선입선출(FIFO, First-In-First-Out)
- 자료구조론에서 사용되는 용어로 “가장 먼저 추가된 데이터가 가장 먼저 삭제” 되는 구조를 의미합니다.

[참고] Queue에 대해서 궁금하시면 아래의 글을 참고하면 도움이 됩니다.
[Java/자료구조론] 선형구조 이해하기 -1 : 큐(Queue), 스택(Stack), 덱(Deque)
해당 글에서는 자료구조론 중 선형 구조인 큐(Queue)와 스택(Stack), 덱(Deque)에 대해서 이해하고 언제 사용하며 각각의 장단점이 무엇인지에 대해 알아보기 위한 글입니다. 1) 선형 구조(Linear structure
adjh54.tistory.com
1. Queue 구현 클래스
💡 Queue 인터페이스를 기반으로 구현 클래스로는 PriorityQueue, LinkedList, ArrayBlockingQueue, ConcurrentLinkedQueue, LinkedBlockingQueue를 사용할 수 있습니다.
구현 클래스 | 설명 | 특징 |
PriorityQueue | 우선순위 큐를 구현하는데 사용하며 “우선순위가 높은 요소가 먼저 나오는 구조”입니다. | 작업 스케줄러에서 다음에 수행해야 할 작업을 결정할 때 사용할 수 있습니다. |
LinkedList | 일반적인 큐를 구현하는데 사용하며 “먼저 들어온 요소가 먼저 나오는 구조(FIFO)”입니다. | 크기가 제한되지 않으므로, 크기가 고정되어 있지 않은 데이터를 다룰 때 유용합니다. |
ArrayBlockingQueue | 배열로 구현된 큐로 “크기가 고정”되어 있는 구조이다. 요소가 추가 될때 배열의 끝에 추가되며 더 이상 요소를 추가 할 수 없을때 대기열에 추가할 수 없는 구조를 가집니다. | 일시적으로 요청이 증가한 경우 빠른 응답을 보장하는 경우에 유용합니다. |
ConcurrentLinkedQueue | 여러 스레드에서 안전하게 사용할 수 있는 큐로 “비동기 적으로 요소를 추가하거나 제거” 할 수 있는 구조를 가집니다. | 멀티 스레드 환경에서 사용하는 것이 유용합니다. |
LinkedBlockingQueue | “크기가 제한되지 않은 큐”로 요소가 추가되거나 제거될 때 락이 걸리는 구조를 가집니다. | 멀티 스레드 환경에서 사용하는 것이 좋으며, 크기가 고정되어 있지 않은 데이터를 다룰 때 유용합니다. |
// Queue는 인터페이스, PriorityQueue는 인터페이스의 구현체
Queue<String> strPriorityQueue = new PriorityQueue<>();
// Queue는 인터페이스, LinkedList는 인터페이스의 구현체
Queue<String> strLinkedList = new LinkedList<>();
// Queue는 인터페이스, ArrayBlockingQueue는 인터페이스의 구현체
Queue<String> strArrBlockQueue = new ArrayBlockingQueue<>();
// Queue는 인터페이스, ConcurrentLinkedQueue는 인터페이스의 구현체
Queue<String> strCurrLinkedQueue = new ConcurrentLinkedQueue<>();
// Queue는 인터페이스, LinkedBlockingQueue는 인터페이스의 구현체
Queue<String> strLinkedBlockQueue = new LinkedBlockingQueue<>();
[참고] Queue의 인터페이스와 구현체에 대해 궁금하시면 아래의 글을 참고하면 도움이 됩니다.
[Java] Collection Framework(Queue, Stack, Deque)의 인터페이스와 구현체 이해하기 -2 : 정의 및 예시
해당 글에서는 컬렉션 프레임워크(Collection Framework)내에서 사용되는 인터페이스와 이를 구현하는 구현체 간의 관계를 이해하기 위한 목적으로 작성한 글입니다. 💡 이전 Collection Framework로 List, M
adjh54.tistory.com
2) Queue Class Method
💡 해당 API 문서는 Java 11 버전을 기준으로 요약 정리한 API Doucument입니다.
💡 "분류" 부분은 개인적인 기준으로 분류를 하였으니 참고하시면 도움이 될 것 같습니다.
1. 큐 주요 메서드
메서드 | 리턴 값 | 분류 | 예외 발생 여부 | 설명 |
element() | E | 큐 요소 조회 | O | 큐의 head(맨 앞)에 있는 요소를 반환합니다. 큐가 비어있는 경우 예외를 던집니다. |
peek() | E | 큐 요소 조회 | X | 큐의 head(맨 앞)에 있는 요소를 반환합니다. 큐가 비어있는 경우 null을 반환합니다. |
add(E e) | boolean | 큐 요소 추가 | O | 큐에 요소를 추가하고 성공적으로 추가되었는지 여부를 반환합니다. 큐가 제한된 용량을 가지는 경우 예외를 던집니다. |
offer(E e) | boolean | 큐 요소 추가 | X | 큐에 요소를 추가하고 성공적으로 추가되었는지 여부를 반환합니다. 큐가 제한된 용량을 가지는 경우 false를 반환합니다. |
remove() | E | 큐 요소 제거 | O | 큐의 head(맨 앞)에 있는 요소를 제거하고 반환합니다. 큐가 비어있는 경우 예외를 던집니다. |
poll() | E | 큐 요소 제거 | X | 큐의 head(맨 앞)에 있는 요소를 제거하고 반환합니다. 큐가 비어있는 경우 null을 반환합니다. |
💡 [참고] 큐에서 발생할 수 있는 예외 목록
- 특정 메서드 (element, add, remove)를 사용하는 경우 발생할 수 있는 예외이므로 각각에 대한 예외처리가 필요합니다.
메서드 | 예외 | 설명 |
element() | NoSuchElementException | - 큐가 비어 있을때 발생하는 에러 |
add(E e) | IllegalStateException | - 용량 제한으로 인해 지금 요소를 추가할 수 없는 경우 |
add(E e) | ClassCastException | - 지정된 요소의 클래스가 이 대기열에 추가할 수 없는 경우 |
add(E e) | NullPointerException | - 지정한 요소가 null이고 이 대기열에서 null 요소를 허용하지 않는 경우 |
add(E e) | IllegalArgumentException | - 이 요소의 일부 속성으로 인해 이 대기열에 추가할 수 없는 경우 |
remove() | NoSuchElementException | - 큐가 비어 있을때 발생하는 경우 |
Queue (Java SE 11 & JDK 11 )
A collection designed for holding elements prior to processing. Besides basic Collection operations, queues provide additional insertion, extraction, and inspection operations. Each of these methods exists in two forms: one throws an exception if the opera
docs.oracle.com
2. java.util.Collection <E> 인터페이스 메서드
💡 Queue의 인터페이스 경우는 Collection <E>의 객체를 상속받아서 사용합니다. 그렇기에 Collection <E>에서 사용할 수 있는 메서드를 모두 사용이 가능합니다.
💡 java.util.Collection <E> 인터페이스?
- 인터페이스는 Java Collections Framework의 일부로서, 여러 객체를 모으는 컨테이너를 정의합니다. 이 인터페이스는 모든 Collection 클래스의 상위 인터페이스이며, List, Set, Queue 등 다양한 컬렉션 타입 구현에 사용됩니다.

메서드 | 리턴 타입 | 분류 | 설명 |
add(E e) | boolean | 컬렉션 요소 추가 | 지정된 요소를 이 컬렉션에 추가합니다. |
addAll(Collection<? extends E> c) | boolean | 컬렉션 요소 추가 | 지정된 컬렉션의 모든 요소를 이 컬렉션에 추가합니다. |
clear() | void | 컬렉션 요소 제거 | 이 컬렉션에서 모든 요소를 제거합니다. |
isEmpty() | boolean | 컬렉션 요소 조회 | 이 컬렉션에 요소가 하나도 포함되어 있지 않은 경우 true를 반환합니다. |
contains(Object o) | boolean | 컬렉션 요소 조회 | 이 컬렉션에 지정된 요소가 포함되어 있는 경우 true를 반환합니다. |
containsAll(Collection<?> c) | boolean | 컬렉션 요소 조회 | 이 컬렉션에 지정된 컬렉션의 모든 요소가 포함되어 있는 경우 true를 반환합니다. |
equals(Object o) | boolean | 컬렉션 요소 비교 | 지정된 개체와 이 컬렉션을 비교하여 동일한지 여부를 확인합니다. |
remove(Object o) | boolean | 컬렉션 요소 제거 | 지정된 요소의 단일 인스턴스를 이 컬렉션에서 제거합니다. |
removeAll(Collection<?> c) | boolean | 컬렉션 요소 제거 | 지정된 컬렉션에 포함된 이 컬렉션의 모든 요소를 제거합니다. |
removeIf(Predicate<? super E> filter) | boolean | 컬렉션 요소 제거 | 주어진 프레디케이트를 충족하는 이 컬렉션의 모든 요소를 제거합니다. |
retainAll(Collection<?> c) | boolean | 컬렉션 보존 | 지정된 컬렉션에 포함된 요소만 이 컬렉션에 보존합니다. |
iterator() | Iterator<E> | 컬렉션 순회 | 이 컬렉션의 요소를 반복하는 데 사용할 수 있는 반복자를 반환합니다. |
hashCode() | int | 컬렉션 변환 | 이 컬렉션에 대한 해시 코드 값으로 반환합니다. |
size() | int | 컬렉션 값 반환 | 이 컬렉션의 요소 수를 반환합니다. |
parallelStream() | Stream<E> | 켈력션 변환 | 이 컬렉션을 소스로 사용하는 가능성이 있는 parallel Stream을 반환합니다. |
spliterator() | Spliterator<E> | 컬렉션 변환 | 이 컬렉션의 요소에 대한 Spliterator를 만듭니다. |
stream() | Stream<E> | 컬렉션 변환 | 이 컬렉션을 소스로 사용하는 순차적 Stream을 반환합니다. |
toArray() | Object[] | 컬렉션 변환 | 이 컬렉션의 모든 요소를 포함하는 배열을 반환합니다. |
default <T> T[] toArray(IntFunction<T[]> generator) | T[] | 컬렉션 변환 | 반환된 배열을 할당하는 데 사용할 제네레이터 함수를 사용하여이 컬렉션의 모든 요소를 포함하는 배열을 반환합니다. |
<T> T[] toArray(T[] a) | T[] | 컬렉션 변환 | 지정된 배열의 형식으로 이 컬렉션의 모든 요소를 포함하는 배열을 반환합니다. |
Collection (Java SE 11 & JDK 11 )
Compares the specified object with this collection for equality. While the Collection interface adds no stipulations to the general contract for the Object.equals, programmers who implement the Collection interface "directly" (in other words, create a clas
docs.oracle.com
오늘도 감사합니다. 😀
'Java > API Document' 카테고리의 다른 글
[Java/API] WebClient Method API Document : Java 11 (0) | 2023.08.14 |
---|---|
[Java/API] Priority Queue Method API Document : Java 11 (0) | 2023.07.20 |
[Java/API] Stack Method API Document : Java 11 (0) | 2023.07.08 |
[Java/API] HashMap Method API Document : Java 11 (0) | 2023.05.29 |
[Java/API] ArrayList Method API Document : Java 11 (0) | 2023.05.29 |