Queue
Queue의 사전적 의미란 무엇인가를 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미한다. 즉 먼저 들어온 data가 가장 먼저 나가는 형태인 FIFO(First In First Out)형태, 다른 말로는 가장 나중에 들어온 data가 가장 나중에 나가는 형태인 LILO(Last In Last Out)형태의 구조를 가지고 있다.
-Enqueue : 큐에 데이터를 넣는 기능
-Dequeue : 큐에서 데이터를 꺼내는 기능
Queue의 특징
- FIFO, LILO 구조
- 한 쪽 끝은 프런트(front)로 정하여 삽입 연산만 수행
- 다른 한 쪽 끝은 리어(rear)로 정하여 삭제 연산만 수행
- 컴퓨터 버퍼에서 주로 사용되며 대량의 작업이 입력 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴
- 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용
Queue의 사용법
- Queue 선언
//자바에서 Queue는 LikedList를 활용하여 생성하여야 한다.
//따라서 LinkedList와 Queue모두 import가 되어있어야한다
import java.util.LinkedList;
import java.util.Queue;
// Integer 형 queue 선언
Queue<Integer> queue_int = new LinkedList<Integer>();
// String 형 queue 선언
Queue<String> queue_str = new LinkedList<String>();
- Queue에 Data 추가하기
// 데이터 추가는 add(value) 또는 offer(value) 를 사용한다.
queue_int.add(1);
queue_str.offer("one");
//add(value) 메소드의 경우 만약 삽입에 성공하면 true를 반환하고
//공간이 부족하여 삽입에 실패하면 IllegalStateException을 발생시킨다.
- Queue에서 Data 빼내기
// queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue_int.poll();
// queue에 첫번째 값 제거
queue_int.remove();
// queue 초기화
queue_int.clear();
ArrayList를 활용하여 Queue자료구조 구현해보기
//다양한 데이터 타입을 다룰 수 있도록 Java Genric 타입 활용
public class MyQueue<T> {
private ArrayList<T> queue = new ArrayList<T>();
public void enqueue(T data){
queue.add(data);
}
public T dequeue(){
if(queue.isEmpty()){
//queue의 데이터가 없을 시 null을 return
return null;
}
return queue.remove(0);
}
}
'자료구조' 카테고리의 다른 글
Hash Table (0) | 2021.10.24 |
---|---|
Double Linked List (0) | 2021.10.15 |
Single Linked List (0) | 2021.10.15 |
Stack (0) | 2021.10.15 |
알고리즘 복잡도 표현 방법 (0) | 2021.10.15 |