Kotlin 큐(Queue)

Notepad96

·

2020. 12. 1. 22:57

300x250

 

 

 

 


1. Queue(큐)

Queue는 선입선출(먼저 입력된 것이 먼저 출력된다)의 구조를 갖는 자료구조이다.

 

 

Queue

 

Queue는 다음 그림과 같이 선착순 줄서기와 동일하다고 볼 수 있다.

 

 

가장 먼저 줄을 선 사람(가장 먼저 입력된)이 가장 먼저 일을 수행(가장 먼저 출력) 한다.

 

 

 

Kotlin 에서는 Stack처럼 구현된 것이 없어 직접 구현하거나 혹은 Java에서 사용하였던 LinkedList와 Queue를 사용할 수 있다.

 

 

이를 사용하기 위해서 Queue와 LinkedList를 가져와야 함으로 'import java.util.*'를 해주어야만 한다.

 

 

 

 

 


2. 코 드

환경 : Kotlin Version = 1.4.20, JVM

import java.util.*

fun main(args : Array<String>) {
    var q: Queue<Int> = LinkedList<Int>()   // ★☆★타입 지정해주어야 한다☆★☆
    q.offer(1)  // = q.add(1)
    q.offer(2)
    q.offer(3)
    q.offer(4)
    println("===================삽 입=======================")
    println(q.add(5))     // 삽입
    // println(q.add(0, 100))  // index = 0에 100 삽입

    println("=====================탐 색=======================")
    println(q)
    println("맨 앞 = ${q.peek()}")    // = q.element()
    println("Size = ${q.size}")
    // println("index 0 = ${q[0]}")     // Queue 타입 지정안했을 경우 사용가능
    println("5 포함 여부 : ${q.contains(5)}")
    println("10 포함 여부 : ${q.contains(10)}")


    println("===================삭 제=======================")
    while(q.isNotEmpty()) { // <-> isEmpty()
        println("Pop : ${q.poll()}")    // = q.remove()
    }

}

 

결 과

 

- 삽입하기 위해서는

 

add 함수 혹은 offer 함수를 사용할 수 있다.

 

 

 

만약 q를 선언 할 때 타입(Queue<Int>)를 지정하지 않는다면 LinkedList 타입으로써 Queue와는 다르다.

 

그래서 add 함수를 사용하여 index를 지정하는 삽입할 수 있다.

 

따라서 이같은 사용방법은 Queue의 특성을 해치는 사용방법이기 때문에 사용하지 말아야 한다.

 

 

이와 마찬가지로 타입을 지정하지 않는다면 '[]' 연산자를 이용하여 index로 접근할 수 있다.

 

하지만 Queue의 구조상 이러한 접근은 불필요하다,

 

 

따라서 Queue 선언 시 타입을 반드시 지정해주는 것이 좋다.

 

 

 

 

 

peek 함수 == element 함수 : 가장 앞의 값을 반환

 

size : Queue의 길이

 

contains : 포함 여부 확인, 현재 Queue의 존재하는 값이라면 true, 아니라면 false를 반환

 

 

 

 

 

- isNotEmpty 함수를 사용하면 현재 Queue가 비어있지 않다면 true를 반환받으며

 

이와 반대대는 isEmpty 함수를 사용하면 현재 Queue가 비어있다면 true를 반환받는다.

 

 

 

삭제를 하기 위해서는 remove 함수 혹은 poll 함수를 사용할 수 있으며 해당 값을 반환해준다.

 

 

300x250