본문 바로가기
Kotlin

[Kotlin] Kotlin에서 Queue 사용하기

by Echung 2024. 1. 9.

thumbnail

안녕하세요. 이번에는 Kotlin에서 queue를 사용하는 방법을 알아보겠습니다.

Queue란, 


QueueFIFO(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  란, 


사진 1. 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/

반응형