Idealim
article thumbnail

/* 본 게시물은 ' ' 의 내용과 참고자료를 토대로 작성되었습니다. */

/* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */

참고 자료

[김초희] 코틀린에서 Queue 사용하기 : https://choheeis.github.io/newblog//articles/2020-10/kotlinQueue


[자료구조] 큐에 대해 알아봤으니 kotlin 에서 큐를 사용하는 법에 대해 알아보자. 기본적으로 코틀린에서는 queue를 라이브러리로 제공하지 않는다. 그렇기 때문에 다음과 같은 방법으로 queue 를 사용할 수 있다.

  • Kotlin 에서 제공하는 자료구조 중 queue를 대체할 자료구조 사용 (ex. ArrayList , LinkedList, Deque)
  • Java에서 제공하는 Queue 라이브러리 사용하기

1. Kotlin 에서 제공하는 자료구조로 queue 대체

fun main() {
    val queue = arrayListOf<Int>()

    //add() 함수를 이용해 마지막에 값 추가
    queue.add(1)
    queue.add(2)
    queue.add(3)

    //removeAt(0) : 첫 번째 값 삭제
    queue.removeAt(0)
}

MutableCollection에 속하는 자료구조 들 중 하나를 이용한다. MutableCollection 의 add() , removeAt() 메서드를 이용해 queue 처럼 사용할 수 있다.


2. Java 에서 제공하는 queue 라이브러리 사용하기

기본적으로 Queue 는 Java.util 패키지 내에 포함되어 있어 java.util 을 import 해야한다. 

queue 에서 제공하는 메서드는 다음과 같다.

[출처] https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html

- add(element: E)
Any type의 element를 Queue에 추가한다. Queue에 element를 더하는데 성공하면 true를 return하며, 실패 시 IllegalStateException을 발생시킨다.

- element() 
element()는 Queue의 head를 제거하지 않고 head 값의 데이터를 반환한다.

- offer(e: E)
add()와 동일한 기능을 수행하지만, queue 의 용량을 초과하지 않는 경우에만 수행한다.

- peek()
element()와 동일한 기능을 수행하지만, Queue가 비어있을 경우 null을 return하는 차이점을 가진다.

- poll()
Queue에서 일반적으로 사용될 function으로, Queue의 head에 존재하는 element를 return하고, 동시에 element를 Queue에서 제거한다. Queue가 비어있는 경우 null을 return한다.

- remove()
poll()과 동일한 기능을 수행하지만, Queue가 비어있는 경우 null을 return하지 않는 차이점이 있다.
fun main() {
    val queueByJava: Queue<Int> = LinkedList()

    queueByJava.add(1)
    queueByJava.add(2)
    queueByJava.add(3)

    queueByJava.remove()
}

* Queue의 데이터형은 Queue<T>로 설정하고, init시에는 LinkedList()로 생성해주어야 한다.

 

 

 

스택을 이용하는 방법도 위 방법과 같다.

ArrayList() 나 LinkedList() 를 사용하도록 하자.

 

 

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.