반응형
public void QueueCreate() {
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue2 = new LinkedList<>(); //String형 queue 선언, linkedlist 이용
}
Queue란?
Queue
의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다.
Queue
는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)
의 형태를 가집니다.
FIFO
형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다.
Queue의 특징
- 먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조
- 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함
- 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행함
- 그래프의 넓이 우선 탐색(BFS)에서 사용
- 컴퓨터 버퍼에서 주로 사용, 마구 입력이 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴
Queue의 예제
Queue 선언
public void QueueCreate() {
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue2 = new LinkedList<>(); //String형 queue 선언, linkedlist 이용
}
Queue
의 경우 Interface
이기 때문에 구현체를 지정해서 선언해주어야합니다.
가장 많이 쓰이는 방법인 LinkedList
를 예제로 구현하였습니다.
QueueAdd
public void QueueAdd() {
//int형 queue 선언
Queue<Integer> queue = new LinkedList<>();
// 값 리턴 _ 문제 발생시 exception 발생
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2
// 값 리턴 _ boolean
queue.offer(3); // queue에 값 3 추가
}
QueueDelete
public void QueueDelete() {
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1); // queue에 값 1 추가
queue.offer(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.poll(); // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove(); // queue에 첫번째 값 제거
queue.clear(); // queue 초기화
}
QueueFirstOut
public void QueueFirstOut() {
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1); // queue에 값 1 추가
queue.offer(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
// 값 리턴하지만 삭제되진 않음
queue.peek(); // queue의 첫번째 값 참조
}
반응형