안녕하세요. 이번에는 Kotlin에서 queue를 사용하는 방법을 알아보겠습니다.
Queue란,
Queue는 FIFO(First in First Out) 선입선출을 하는 자료구조입니다. 들어온 순서대로 나가는 특징이 있고 쉽게 줄 서기를 생각하시면 됩니다. 삽입과 삭제 시 O(1)이라는 시간복잡도를 가지며, 검색은 O(n)이라는 시간복잡도를 가집니다.
Queue 사용법
Kotlin에서는 따로 Queue를 제공해주지는 않습니다. Kotlin은 Java와 100% 호환되기 때문에 Java의 Queue 인터페이스 및 구현체를 그대로 사용하면 됩니다. 코드로 알아보겠습니다.
import java.util.LinkedList
fun main() {
// 큐 생성
val queue = LinkedList<String>()
// 요소 추가
queue.offer("첫 번째 요소")
queue.offer("두 번째 요소")
queue.offer("세 번째 요소")
// 큐의 첫 번째 요소 확인 및 제거
val firstElement = queue.poll()
println("첫 번째 요소: $firstElement")
// 큐의 첫 번째 요소 확인 (제거하지 않음)
val peekedElement = queue.peek()
println("현재 첫 번째 요소: $peekedElement")
// 나머지 요소 확인
println("나머지 요소:")
while (queue.isNotEmpty()) {
val element = queue.poll()
println(element)
}
}
이렇게 java에서 사용하는 것처럼 LinkedList를 사용해서 Queue를 사용하면 됩니다. 여기서 주의할 점은 import java.util.* 이나 import java.util.LinkedList를 꼭 추가해줘야 한다는 점입니다. 그리고 Queue는 제공해주지는 않지만 Kotlin 표준 라이브러리에서 제공해 주는 덱(Deque)의 구현제 중 하나인 ArrayDeque를 사용해서 Queue처럼 사용할 수 있습니다.
ArrayDeque 란,
ArrayDeque는 Kotlin 표준 라이브러리에서 제공하는 덱(Deque) 구현체 중 하나입니다. 덱은 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 자료 구조로, 큐(Queue)와 스택(Stack)의 기능을 모두 지원합니다. 코드로 알아보겠습니다.
import kotlin.collections.ArrayDeque
fun main() {
// ArrayDeque 생성
val arrayDeque= ArrayDeque()
// 양쪽 끝에서 요소 추가
arrayDeque.addFirst("첫 번째 요소")
arrayDeque.addLast("두 번째 요소")
// 양쪽 끝에서 요소 제거
val firstElement = arrayDeque.removeFirst()
val lastElement = arrayDeque.removeLast()
// 결과 출력
println("첫 번째 요소: $firstElement")
println("두 번째 요소: $lastElement")
}
이렇게 ArrayDeque를 사용해서 Queue와 같은 기능을 구현할 수 있습니다.
ArrayDeque 주요 기능 설명
- add : 목록의 끝에 요소를 추가합니다.
- addFirst : 목록의 제일 앞에 요소를 추가합니다.
- addLast: 목록의 끝에 요소를 추가합니다.
- clear : 목록을 초기화합니다.
- contains : 목록에 지정된 요소가 있으면 true, 없으면 false를 반환합니다.
- isEmpty : ArrayDeque가 비었으면 true, 안 비었으면 false를 반환합니다.
- first : 첫 번째 요소를 반환하거나, 이 deque가 비어 있으면 NoSuchElementException을 발생시킵니다.
- last : 마지막 요소를 반환하거나, 이 deque가 비어 있으면 NoSuchElementException을 발생시킵니다.
- removeFirst : 이 deque에서 첫 번째 요소를 제거하고 제거된 요소를 반환하거나, 이 deque가 비어 있으면 NoSuchElementException을 발생시킵니다.
- removeLast : 이 deque에서 마지막 요소를 제거하고 제거된 요소를 반환하거나, 이 deque가 비어 있으면 NoSuchElementException을 발생시킵니다.
Reference
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-array-deque/
'Kotlin' 카테고리의 다른 글
[Kotlin] 배열, 리스트 자르기 (2) | 2024.01.04 |
---|---|
[Kotlin] sumOf 함수를 알아보자. (0) | 2023.12.24 |
[Kotlin] Collect vs CollectLatest에 대하여 알아보자. (0) | 2023.12.20 |
[Kotlin] 요일 구하는 방법 (2) | 2023.12.17 |
[Kotlin] 기초 문법 : flatten() 함수 (0) | 2023.12.16 |