기록/JAVA

[JAVA] Queue 인터페이스 구현하기 (1) Queue

5월._. 2023. 7. 10.
728x90

Queue라는 인터페이스를 구현하는 방식은 일반적으로 ArrayDeque, LinkedList 두 가지가 있다.

이 두 가지 클래스가 Queue의 추상메서드를 어떤 식으로 수행하는지 비교해보고자 한다. (java 1.8 기준)

그 이전에, 큐가 어떤 것인지부터 짚어본다.

 

Queue란?

큐는 데이터를 일시적으로 저장하고 처리하는 자료구조다. 데이터를 먼저 입력한 순서대로 저장하고, 먼저 입력된 데이터가 먼저 처리되는 FIFO(First-In-First-Out)원칙을 따른다.

은행 창구, 버스정류장 등 일반적인 일상생활에서의 대기줄을 생각하면 쉽다.

 

Queue 추상 메서드 목록

Queue 인터페이스에는 다음과 같은 추상 메서드가 있다.

이 메서드를 잘 기억해서, ArrayDeque이나 LinkedList에서 어떤 식으로 내부 구현을 했는지 비교할 예정이다.

boolean add(E e) 큐에 삽입 성공하면 true, 용량부족이면 IllegalStateException이 발생한다.
boolean offer(E e) 큐에 삽입 성공하면 true, 실패하면 false반환. 실패해도 예외를 발생시키지 않는다.
E remove() 큐의 맨 앞 요소를 반환과 동시에 삭제한다. 큐가 비어있다면 NoSuchElementException이 발생한다.
E poll() 큐의 맨 앞 요소를 반환과 동시에 삭제한다. 큐가 비어있다면 null을 반환한다.
E element() 큐의 맨 앞 요소를 반환한다. 큐가 비어있다면 NoSuchElementException이 발생한다.
E peek() 큐의 맨 앞 요소를 반환한다. 큐가 비어있다면 null을 반환한다.

 

댓글