자바에서 큐(Queue) 는 java.util.Queue 인터페이스를 통해 제공되며, LinkedList, ArrayDeque, PriorityQueue 등의 클래스에서 구현됩니다.
아래는 Queue 인터페이스의 주요 메서드입니다.
| 메서드 | 설명 | 반환값 |
|---|---|---|
offer(E e) | 큐의 끝에 요소 추가 (성공 시 true, 실패 시 false) | boolean |
add(E e) | 큐의 끝에 요소 추가 (실패 시 예외 발생) | boolean |
Queue<Integer> queue = new LinkedList<>();
queue.offer(10); // 성공 시 true 반환
queue.add(20); // 성공 시 true 반환 (실패 시 예외 발생)
🚀 offer() vs add() 차이
offer()는 큐의 크기가 제한된 경우 공간이 없으면 false를 반환.add()는 공간이 없으면 예외(IllegalStateException)를 발생.| 메서드 | 설명 | 반환값 |
|---|---|---|
poll() | 큐의 첫 번째 요소 제거 및 반환 (비어있으면 null) | E (요소) |
remove() | 큐의 첫 번째 요소 제거 및 반환 (비어있으면 예외 발생) | E (요소) |
System.out.println(queue.poll()); // 10 (큐에서 제거됨)
System.out.println(queue.remove()); // 20 (큐에서 제거됨, 비어있으면 예외 발생)
🚀 poll() vs remove() 차이
poll()은 큐가 비어 있으면 null을 반환.remove()는 큐가 비어 있으면 예외(NoSuchElementException) 발생.| 메서드 | 설명 | 반환값 |
|---|---|---|
peek() | 큐의 첫 번째 요소 확인 (제거하지 않음, 비어있으면 null) | E (요소) |
element() | 큐의 첫 번째 요소 확인 (제거하지 않음, 비어있으면 예외 발생) | E (요소) |
System.out.println(queue.peek()); // 10 (큐에서 제거되지 않음)
System.out.println(queue.element()); // 10 (큐에서 제거되지 않음, 비어있으면 예외 발생)
🚀 peek() vs element() 차이
peek()은 큐가 비어있으면 null을 반환.element()는 큐가 비어있으면 예외(NoSuchElementException) 발생.| 메서드 | 설명 | 반환값 |
|---|---|---|
size() | 큐에 있는 요소 개수 반환 | int |
isEmpty() | 큐가 비어있는지 확인 | boolean |
contains(E e) | 특정 요소가 큐에 있는지 확인 | boolean |
clear() | 큐의 모든 요소 제거 | void |
System.out.println(queue.size()); // 큐 크기 반환
System.out.println(queue.isEmpty()); // 큐가 비어있는지 확인
System.out.println(queue.contains(10)); // true (큐에 10이 있는 경우)
queue.clear(); // 큐 비우기
| 메서드 | 설명 | 비어있을 때 |
|---|---|---|
offer(E e) | 요소 추가 (실패 시 false 반환) | - |
add(E e) | 요소 추가 (실패 시 예외 발생) | IllegalStateException |
poll() | 첫 번째 요소 제거 및 반환 | null 반환 |
remove() | 첫 번째 요소 제거 및 반환 | NoSuchElementException |
peek() | 첫 번째 요소 조회 (제거 X) | null 반환 |
element() | 첫 번째 요소 조회 (제거 X) | NoSuchElementException |
size() | 큐 크기 반환 | - |
isEmpty() | 큐가 비어있는지 확인 | - |
contains(E e) | 특정 요소 존재 여부 확인 | - |
clear() | 모든 요소 제거 | - |
import java.util.LinkedList;
import java.util.Queue;
public class QueueMethodsExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// 큐에 데이터 추가
queue.offer(10);
queue.offer(20);
queue.offer(30);
System.out.println("큐 상태: " + queue); // [10, 20, 30]
// 큐의 첫 번째 요소 확인
System.out.println("peek(): " + queue.peek()); // 10
System.out.println("element(): " + queue.element()); // 10
// 큐에서 요소 제거
System.out.println("poll(): " + queue.poll()); // 10
System.out.println("remove(): " + queue.remove()); // 20
// 큐 크기 및 비어있는지 확인
System.out.println("큐 크기: " + queue.size()); // 1
System.out.println("큐 비어있는가?: " + queue.isEmpty()); // false
// 큐 비우기
queue.clear();
System.out.println("큐 비어있는가?: " + queue.isEmpty()); // true
}
}
자바에서 Queue를 사용할 때, 안정적인 offer() 및 poll() 사용을 추천합니다.
offer(), add()poll(), remove()peek(), element()size(), isEmpty(), contains()clear()