728x90
Queue 란?
Queue는 선입선출(FIFO, First In First Out)방식의 자료형입니다. 먼저 입력되는 데이터가 먼저 나가는 구조로 되어있습니다.
일반적인 줄서기와 동일하다고 보시면 됩니다.
Queue 종류
// 기본 인터페이스
import java.util.Queue;
// LinkedList
import java.util.LinkedList;
// PriorityQueue
import java.util.PriorityQueue;
Java에서 Queue는 Interface로 정의되어있습니다.
기본적으로는 LinkedList를 활용하여 Queue를 사용하고 있습니다.
만약 내부적 정렬이 필요한 경우에는 PriorityQueue를 사용하고 있습니다.
(예 : Queue에 입력된 데이터를 내림차순으로 정렬하여 추출)
// 문자열을 데이터로 하는 Queue
Queue<String> queue = new LinkedList<String>();
// 숫자를 데이터로 하는 Queue, 숫자는 오름차순으로 정렬
Queue<Integer> queue = new PriorityQueue<Integer>((a,b) -> a - b);
데이터 입력
queue.add("test");
queue.offer("test");
Queue에는 데이터를 입력하는 add와 offer 함수가 제공됩니다.
둘간의 차이는 Queue에 사이즈를 초과하여 입력이 불가할 경우
- add() 함수는 IllegalStateException을 발생시킵니다.
- offer() 함수는 false를 반환합니다. 용량제한이 있는 Queue를 사용할 경우 이 함수를 선호합니다.
데이터 추출
// 첫번째 데이터 추출
queue.poll();
// 첫번째 데이터 추출, 없으면 NoSuchElementException 발생
queue.remove();
// 첫번째 데이터 조회, 추출은 하지않음
queue.peak();
Queue에서 데이터를 추출하는 poll, remove, peak 함수가 제공됩니다.
차이는 다음과 같습니다.
- poll() 함수는 첫번째 데이터를 추출(큐에서 삭제)하며 데이터가 없으면 null을 반환합니다.
- remove() 함수는 첫번째 데이터를 추출(큐에서 삭제)하며 데이터가 없으면 NoSuchElementException을 발생시킵니다.
- peak() 함수는 첫번째 데이터를 조회하며 큐에서 삭제하지 않습니다. 데이터가 없으면 null을 반환합니다.
반응형
'Language' 카테고리의 다른 글
[Selenium Python] chrome 115 버전 드라이버 오류 (0) | 2023.08.10 |
---|---|
[Vue.js] Tags with side effect (script and style) are ignored in client component templates. (1) | 2022.10.08 |
[Python] Tensorflow로 사용가능한 GPU 확인하기 (0) | 2021.04.06 |
[Kotlin] IntelliJ에서 Kotlin 시작하기 (0) | 2019.05.11 |
[highlight.js] 티스토리 신규 에디터에 소스코드 입력 (0) | 2019.04.19 |