반응형
큐(Queue)의 특징
1. 먼저 들어간 데이터가 먼저 나오는 선입선출, FIFO(First In First Out) 구조로, 줄을 서서 기다리는 구조와 같다.
2. 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행한다.
3. 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행한다.
4. 그래프(Graph)의 넓이 우선 탐색(BFS)에 사용된다.
큐(Queue) 클래스
큐(Queue) 선언
자바에서 큐(Queue)는 LinkedList를 활용해서 사용한다.
import java.util.Queue;
import java.util.LinkedList;
Queue<Element> queue = new LinkedList<Element>();
큐(Queue) 동작 및 메서드
Enqueue 동작
큐에 데이터를 추가하는 동작으로 offer 와 add 메소드가 있다.
두 메소드의 차이점은 공간의 제약이 있는 큐(Queue) 구현체에서 발생한다.
// 큐가 꽉차있는 경우
offer(value) : false 반환
add(value) : IllegalStateException 발생
사이즈 제약이 있는 큐를 사용하는 경우는 offer 메소드의 사용을 더 권장한다.
Dequeue 동작
큐의 데이터를 추출하는 동작으로, poll과 remove 모두 큐의 첫 번째 데이터를 제거하는 메소드이다.
두 메소드의 차이는 데이터가 없는 큐(Queue) 구현체에서 발생한다
// 큐가 비어있는 경우
poll() : null 반환
remove() : NoSuchElementException 발생
한 번에 큐에 있는 모든 데이터를 지우고 싶은 경우 clear 메소드를 호출하면 된다.
clear()
Peek 동작
큐의 데이터를 조회하는 동작으로, 첫 번째 데이터를 조회할 때 peek과 element 메소드를 사용한다.
두 메소드 역시 큐가 비어있을 때 동작 차이가 있다.
// 큐가 비어있는 경우
peek() : null 반환
element() : NoSuchElementException 발생
728x90
반응형
'Algorithm > Stack & Queue' 카테고리의 다른 글
[자료구조] 자바 덱(Deque)의 클래스 사용하기 (0) | 2022.07.07 |
---|---|
[자료구조] 자바 우선순위 큐(Priority Queue)의 클래스 사용하기 (0) | 2022.07.05 |
[자료구조] 자바 스택(Stack)의 클래스 사용하기 (0) | 2022.06.19 |
댓글