First In First Out; FIFO
큐는 스택과 다르게 먼저 들어온 데이터가 먼저 나가는 선입선출 구조입니다.
입력 순서대로 데이터 처리를 해야할 때 주로 사용합니다.
Ex) 프린트기, 터널
위에서 말했던 것처럼 선입선출의 구조를 따르며, 기본적으로 데이터 추가와 데이터 꺼내기, 큐 공간 확인 동작 등으로 스택과 얼추 비슷한 느낌이 나지만 아래 사진을 본다면 차이점을 인지하실 수 있을 것입니다.

스택에서는 데이터 추가와 꺼내는 작업을 push와 pop이라고 칭했지만 Queue에서는 Enqueue와 Dequeue라고 부릅니다.
큐에 데이터를 추가하는 것은 스택과 차이가 없습니다. 아래 이미지와 같이 동작합니다.

큐와 스택의 차이점은 이 꺼내는 부분에서 발견할 수 있습니다.
아래 이미지를 확인해보시면, 큐는 들어간 순서대로 데이터가 꺼내지는 것을 확인할 수 있습니다.

물론 Java에서는 Queue를 따로 제공하지만 Array로 큐를 구성하는 방법 또한 존재합니다.
// Enqueue
public void enqueue(int data) {
this.rear = (this.rear + 1) % this.arr.length;
this.arr[this.rear] = data;
}
// Dequeue
public void dequeue() {
front = (front + 1) % this.arr.length;
return this.arr[front];
}
이상 Queue 학습 내용이었습니다.