자바생
article thumbnail
Published 2021. 4. 4. 20:47
컬렉션 프레임워크 : Queue, Deque Java
728x90

Queue 인터페이스를 구현하는 클래스

큐를 구현하는 클래스는 여러 가지가 있지만 대부분 사용하는 것은 LinkedList, ArrayDeque라고 생각한다. 일반적인 큐를 사용할 경우 LinkedList를 사용한다. 하지만 자바 api에서는 큐를 사용할 때 LinkedList를 사용하는 것보다 ArrayDeque를 사용하는 것이 더 빠르다고 한다. 성능 테스트한 것을 보았는데 ArrayDeque가 더 빠르고, 그다음으로 LinkedList가 빨랐다.

Queue 특징

큐는 스텍과 다르게 FIFO 형태를 가진다. 먼저 들어온 데이터가 가장 먼저 나가는 구조이다. 

 

Queue 공통 메소드

boolean offer(E e)

- 큐에 데이터를 추가한다.

 

E peek()

- 첫번째로 저장된 값을 리턴한다. 그러나 poll과 다르게 삭제는 하지 않는다.

 

E poll()

- 가장 최근에 저장된 값을 삭제하면서 리턴한다. 

 

E remove()

- 큐에 있는 모든 데이터를 삭제한다. 

 

Queue 사용

Queue<integer> q = new LinkedList<>();

 

Deque 인터페이스를 구현하는 클래스

덱을 구현하는 클래스는 여러 가지가 있지만 대부분 사용하는 것은 ArrayDeque, LinkedList이다. 

 

Deque 특징

덱은 큐와 스텍을 합쳐놓는 것으로 생각하면 된다. front, end 양쪽에서 삽입, 삭제가 가능하다.

 

Deque 공통 메소드

boolean offer(E e), offerFirst(E e), offerLast(E e)

- 이름과 동일하게 first, last에 데이터를 삽입한다.

 

E poll(), pollFirst(), pollLast()

- 이름과 동일하게 first, last에서 데이터를 삭제하면서 리턴한다.

 

void push(E e)

- 스텍에서 사용한 push를 사용할 수 있다.

 

int size()

- 덱의 데이터 개수를 리턴한다.

 

E peek(), peekFist(), peekLast()

- poll과 다르게 데이터를 리턴 하지만 삭제하지는 않는다.

 

boolean contains(Object o)

- deque안에 o가 있으면 true를 반환한다.

 

Deque 사용

Deque<Integer> dq = new ArrayDeque<>();

 

 

 

 

728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그