Queue의 개념
Queue는 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 말한다. 먼저 온 사람이 진료받는 병원 대기줄 과 같은 형태로, 나중에 집어 넣은 데이터가 먼저 나오는 LIFO 구조의 스택과 반대되는 개념이다.
Java에서 Queue는 java.util 패키지 내부에 존재하며 이의 하위 클래스/인터페이스로는 Deque(), PriorityQueue() 등이 있으며 Collection Interface의 확장으로 addAll(), clear(), contains() 등 Collection Interface 메소드 전부 사용 가능하다.
Queue 선언
Queue<T> queue = new LinkedList<>();
Queue<T> queue = new ArrayDeque<>();
위 사진에서 볼수있듯 Queue는 interface라 직접 초기화가 불가능하다. 대신에 이를 구현한 LinkedList 혹은 ArrayDeque로 초기화한다.
Queue의 함수
Throws Exception | Return Special Value | |
Insert | add(e) | offer(e) |
Remove | remove() | poll() |
Examine | element() | peek() |
queue에는 데이터 추가, 삭제, 계산 총 6개의 메소드가 있다.
Queue 데이터 추가하기
queue.add(e);
queue.offer(e);
- boolean add(E e)
- 큐 맨 뒤에 값 삽입
- 삽입 성공 시 return true
- 큐가 꽉 찬 경우 throws IllegalStateException
- boolean offer(e)
- 큐 맨 뒤에 값 삽입
- 삽입 성공 시 return true
- 큐가 꽉 찬 경우 return false
Queue 데이터 삭제하기
queue.remove();
queue.poll();
- E remove()
- 큐 맨 앞의 값 반환 후 삭제
- 큐가 비어있을 경우 throws NoSuchElementException
- E poll()
- 큐 맨 앞의 값 반환 후 삭
- 큐가 비어있을 경우 return null
Queue 데이터 조회하기
queue.element();
queue.peek();
- E element()
- 큐 맨 앞의 값 출력 (삭제 x)
- 큐가 비어있을 경우 throws NoSuchElementException
- E peek()
- 큐 맨 앞의 값 출력 (삭제 x)
- 큐가 비어있을 경우 return null
요약
- Queue는 먼저 들어온 데이터가 먼저 나가는 FIFO(First In First Out) 형태의 자료구조.
- Queue를 선언하려면 이의 구현체인 LinkedList나 ArrayDeque를 사용.
- 데이터 추가는 add(), offer()
- 데이터 삭제는 remove(), poll()
- 데이터 조회는 element(), peek()
출처
https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/util/Queue.html
Queue (Java Platform SE 7 )
A collection designed for holding elements prior to processing. Besides basic Collection operations, queues provide additional insertion, extraction, and inspection operations. Each of these methods exists in two forms: one throws an exception if the opera
docs.oracle.com
https://cocoon1787.tistory.com/774
[JAVA] Queue(큐) 사용법 (add vs offer / remove vs poll / element vs peek)
🚀 자바에서 큐를 사용하면서 값 추가, 삭제, 검색 메서드가 2개씩 있어서 어떠한 차이점이 있는지 알아보기 위해 정리해봤습니다. ⭐️ Queue 선언 Queue q = new LinkedList(); Integer형 선언 ⭐️ Queue에
cocoon1787.tistory.com
'Language > Java' 카테고리의 다른 글
[Java] Jar (0) | 2024.08.05 |
---|---|
[Java] String, StringBuilder, StringBuffer (0) | 2023.10.12 |