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을 반환한다. |
'기록 > JAVA' 카테고리의 다른 글
[JAVA] Queue 인터페이스 구현하기 (3) ArrayDeque (0) | 2023.07.11 |
---|---|
[JAVA] Queue 인터페이스 구현하기 (2) LinkedList (0) | 2023.07.11 |
[JAVA] System.arraycopy, Array.clone() (0) | 2022.05.01 |
[JAVA] 예외처리의 비용 (0) | 2022.04.30 |
[JAVA] library, framework, pattern, architecture 차이 (0) | 2022.04.19 |
댓글