성장 일기/알고리즘
[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메서드 이다.