Queue 큐 interface List란?
- Queue interface는 선형 자료구조로 주로 순서가 있는 데이터를 기반으로 선입선출(FIFO)을 위해 만들어진 인터페이스이다.
- 제일 앞쪽의 데이터 위치를 head라고 하고, 가장 뒤에 있는 것을 tail 이라고 한다.
- Queue는 단방향 삽입삭제가 가능한 반면, Queue를 상속하고 있는 Deque은 양방향이 가능하다. (큐에서 확장)-
- Deque은 카드를 생각하면 좋다. 중간에서 카드를 뺄 수는 없지만, 맨 아래, 맨 위에서 접근이 모두 가능하다.
Queue Deque interface 를 구현하는 클래스
1. LinkedList
2. ArrayDeque
3. PriorityQueue
Queue / Deque interface에 선언된 대표적인 메소드
- 큐와 덱은 거의 동일하지만, 덱이 양방향에서 데이터 삽입 삭제가 되기 때문에 메소드가 그 만큼 늘어났다.
LinkedList
- LinkedList는 리스트를 구현하기도 하지만, Deque을 구현하기도 한다. Deque은 또 Queue를 상속받는다.
- 그래서 LinkedList는 리스트, 덱, 큐 세 가지를 구현할 수 있다.
Public class LinkedList<E>
extends AbstarctSequentialList<E>
implemets List<E>, Deque<E>, Cloneable, java.io.Serializable
{
- ArryaList와 LinkedList의 차이점은 object[] 배열로 관리하느냐, Node라는 객체를 연결하여 관리하느냐 차이다.
- 마찬가지로 Deque와 Queue를 LinkedList처럼 Node 객체로 연결해서 관리하길 바라면, LinkedList를 사용하면 되는 것이다.
- 반대로 ArrayList처럼 Object[] 배열로 구현되어 있는 것은 ArrayDeque이다.
- 일반적인 Queue를 사용하기를 원한다면, 보통 LinkedList를 사용하면 된다.
Queue<T> queue = new LinkedList<>();
Deque<T> queue = new LinkedList<>();
PriorityQueue
- priorityQueue는 우선순위 큐라고 해서, 기본적으로 선입선출이라는 형태로 짜여진 Queue와는 조금 다르게, '데이터 우선순위'에 기반하여 우선순위가 높은 데이터가 나온다.
- 따로 정렬방식을 지정하지 않으면 낮은 숫자가 높은 우선순위를 갖는다.
- 주어진 데이터 중, 최댓값과 최솟값을 가지고 오는 데 유용하지만, 사용자가 정의한 객체를 타입으로 한다면 Comparator나 Comparable을 통해 정렬 방식을 구현해주어야 한다.
'Programming > Data Structure' 카테고리의 다른 글
적절한 자료구조를 사용하는 방법 (0) | 2022.03.25 |
---|---|
Set 자료구조란 무엇인가? (0) | 2022.03.24 |
List 리스트 자료구조란? (ArrayList, LinkedList, Vector, Stack) (0) | 2022.03.24 |
자바 컬렉션 프레임워크 (0) | 2022.03.23 |
Java reverse array (0) | 2022.03.23 |