JAVA/Java

[Java] 컬렉션 프레임워크 - Queue 인터페이스

민트맛녹차 2022. 9. 10. 03:11

Queue, Deque

Queue 인터페이스는 처리 이전에 여러 데이터를 보관하는데 사용하는 컬렉션이다. 전형적으로 FIFO 방식으로 데이터를 정렬한다. (필수는 아님) 

Queue의 메서드 add, remove, element는 꺼낼 인스턴스가 없거나 저장 공간이 부족할 때 예외를 발생시키므로 offer, poll, peek 메서드를 사용하는 것이 권장된다.

Deque 인터페이스는 Queue를 상속한 인터페이스로 Queue는 단방향으로 삽입, 삭제가 가능하지만 Deque는 양방향으로

삽입, 삭제가 가능하다.

Deque 또한 add~, remove~, get~ 는 Queue와 같은 상황에서 예외를 발생시키므로 offer~, poll~, peek~ 메서드를 사용하는 것이 권장된다.

 

LinkedList

Queue<T> queue = new LinkedList<>();
Deque<T> deque = new LinkedList<>();

LinkedList는 List와 Deque를 모두 구현하므로 List, Deque, Queue 에 모두 사용할 수 있다.

Deque 또는 Queue를  LinkedList 처럼 Node 객체로 연결해서 관리하길 원할 때 사용한다.

 

ArrayDeque

ArrayList처럼 내부적으로 Object[] 배열을 사용하여 배열의 길이를 스스로 동적으로 관리한다.  스택으로 사용할 때는 Stack보다 빠르고, 큐로 사용할 때는 LinkedList보다 빠르다고 한다.

 

PriorityQueue

PriorityQueue는 데이터 우선순위에 기반하여 우선순위가 높은 데이터가 먼저 나오는 구조를 가진다. 정렬방식을 지정하지 않으면 낮은 숫자가 높은 우선순위를 가지며 사용자 정의 객체를 타입으로 쓸 경우 Comparator 또는 Comparable을 사용해 정렬방식을 구현해야만한다. 

 

 

참조
윤성우의 열혈 JAVA  프로그래밍
https://st-lab.tistory.com/142
https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html