Kotlin 큐(Queue)
Notepad96
·2020. 12. 1. 22:57
1. 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 함수를 사용할 수 있으며 해당 값을 반환해준다.
'Kotlin > Collections' 카테고리의 다른 글
Kotlin Deque(덱 or 디큐) (0) | 2020.12.02 |
---|---|
Kotlin Pair, Triple Val cannot be reassigned - Pair 값 수정 (0) | 2020.12.02 |
Kotlin 스택(Stack) (0) | 2020.11.30 |
Kotlin getOrElse - 잘못된 접근으로 발생하는 에러 제거 (0) | 2020.11.28 |
Kotlin joinToString - List 문자열 변환 List to String (0) | 2020.11.28 |