Algorithm/Stack & Queue

[자료구조] 자바 큐(Queue)의 클래스 사용하기

헹창 2022. 6. 19.
반응형

큐(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 동작

큐의 데이터를 추출하는 동작으로, pollremove 모두 큐의 첫 번째 데이터를 제거하는 메소드이다.

두 메소드의 차이는 데이터가 없는 큐(Queue) 구현체에서 발생한다

// 큐가 비어있는 경우
poll() : null 반환
remove() : NoSuchElementException 발생

 

한 번에 큐에 있는 모든 데이터를 지우고 싶은 경우 clear 메소드를 호출하면 된다.

clear()

 

Peek 동작

큐의 데이터를 조회하는 동작으로, 첫 번째 데이터를 조회할 때 peekelement 메소드를 사용한다.

두 메소드 역시 큐가 비어있을 때 동작 차이가 있다.

 

// 큐가 비어있는 경우
peek() : null 반환
element() : NoSuchElementException 발생

 

 

 

728x90
반응형

댓글

추천 글