자바에서 큐(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()