Search
Duplicate

1. 대표적인 데이터 구조 : 큐(Queue)

생성일
2022/06/16 05:53
태그
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
복사
참고 : 어디에 큐가 많이 쓰일까?
멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 많이 사용됨
큐의 경우 장단점 보다는(특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케줄링 방식을 함께 이해해두는 것이 좋음