1.
큐 구조
•
줄을 서는 행위와 유사
•
가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조(FIFO)
◦
음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에서 입장하는 것과 동일
◦
FIFO 또는 LILO 방식으로 스택과 꺼내는 순서가 반대
b.
알아둘 용어
i.
Enqueue : 큐에 데이터를 넣는 기능
ii.
Dequeue : 큐에서 데이터를 꺼내는 기능
c.
자바에서의 큐 자료구조 사용하기
•
자바에서는 기본적으로 java,util 패키지에 Queue 클래스를 제공하고 있음
◦
Enqueue 에 해당하는 기능으로 Queue 클래스에서는 add(value) 또는 offer(value) 메서드를 제공함
◦
Dequeue 에 해당하는 기능으로 Queue 클래스에서는 poll() 또는 remove() 메서드를 제공함
◦
아쉽게도, Queue 클래스에 데이터 생성을 위해서는 java.util 패키지에 있는 LinkedList 클래스를 사용해야함
▪
LinkedList 클래스는 자료구조의 링크드리스트와 연관이 있으며, 관련 내용은 큐보다 복잡하므로 이후 챕터에서 상세히 익히도록 함
Queue 클래스 사용해보기
// Queue 사용을 위해, LinkedList 클래스를 사용하므로, 두 클래스 모두 import 해야 함
import java.util.LinkedList;
import java.util.Queue;
// 자료형 매개변수를 넣어서, 큐에 들어갈 데이터의 타입을 지정해야 함
Queue<Integer> queue_int = new LinkedList<Integer>(); // Integer 형 queue 선언
Queue<String> queue_str = new LinkedList<String>(); // String 형 queue 선언
Java
복사
// 데이터 추가는 add(value) 또는 offer(value) 를 사용함
queue_int.add(1);
queue_int.offer(2);
// 출력에 true 라고 출력되는 부분은 offer() 메서드가 리턴한 값으로,
// 셀의 맨 마지막에 함수를 넣을 경우, 변수가 변수값이 출력되는 것처럼 함수는 함수 리턴값이 출력되는 것임
Java
복사
// Queue 인스턴스를 출력하면, 해당 큐에 들어 있는 아이템 리스트가 출력됨
System.out.println(queue_int)
Java
복사
// poll() 은 큐의 첫 번째 값 반환, 해당 값은 큐에서 삭제
queue_int.poll();
Java
복사
// 바로 현재 큐의 아이템을 확인해보면, poll() 을 통해 반환된 값은 삭제되었음을 알 수 있음
queue_int
Java
복사
// poll() 과 마찬가지로, 첫 번째 값 반환하고, 해당 값은 큐에서 삭제
queue_int.remove()
Java
복사
참고 : 어디에 큐가 많이 쓰일까?
•
멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 많이 사용됨
•
큐의 경우 장단점 보다는(특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케줄링 방식을 함께 이해해두는 것이 좋음