성장 일기/알고리즘

[JAVA]QUEUE(큐)

자이오니 2021. 2. 2. 21:41

큐 : 먼저 들어온 데이터가 먼저 나가는 자료구조 (선입선출-FIFO)

enqueue : 큐의 끝에 데이터 추가
dequeue : 큐의 맨앞에 있는 데이터 제거


<Queue 사용법>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.LinkedList;
import java.util.Queue;//둘다 필수
 
//큐 선언
//Queue<Element> q = new LinkedList<>();
Queue<Integer> q = new LinkedList<>();
 
//큐 데이터 추가
q.add(3);    //3추가
q.add(5);    //5추가
q.offer(7);    //7추가
 
//큐 데이터 삭제
q.poll();     //첫번째 값을 반환하고 제거한다. 만약 큐가 비어있다면 null반환
q.remove();    //첫번째 값 제거
q.clear();    //큐 초기화
cs

 

java에서 큐는 LinkedList를 사용하므로 Queue와 LinkedList 모두 import가 필요하다.

데이터를 추가할때는 add/offer 2가지 방법이 있다. 데이터를 추가하면 뒤로 순서대로 쌓여 다음과 같은 모습이된다.

3 5 7

데이터를 삭제할때는 poll/remove를 사용할 수 있는데 poll 명령어의 경우 첫번째 값(삭제되는 값)을 반환한 후 제거하고, remove 명령어는 첫번째 값을 바로 제거한다. 이때 poll은 다른 변수에 담아 저장할 수 있다.

따라서 만약, 위 그림상태에서 poll(혹은 remove)를 사용하면

5 7

이와 같이 첫번째 값인 3이 제거되는 것을 볼 수 있다.

또한, 제거하지 않고 첫번째 값을 확인할 수 있는 방법이 있는데 그것은 peek메서드 이다.

 

1
int first = q.peek();    //처음 값을 반환한다.
cs

 

그럼 변수 first에는 첫번째 값인 5가 저장된다.