Kotlin PriorityQueue(우선순위 큐)

Notepad96

·

2020. 12. 3. 05:14

300x250

 

 

 

 


1. PriorityQueue(우선순위 큐)

 

Priority Queue(우선순위 큐)는 이진트리의 형태로 오름차순 혹은 내림차순으로 값을 저장한다.

 

 

값에 접근하기 위해서는 Stack의 Top 부분 처럼 peek 함수를 사용하여 트리의 Top을 읽을 수 있다.

 

 

 

트리의 Top을 읽음으로써 해당 원소들 중에서 최소값 혹은 최대값을 얻을 수 있다.

 

 

 

사용하기 위해서 "import java.util.*" 를 해주어야 한다.

 

 

 

 

 


2. 코 드

환경 : Kotlin Version = 1.4.20, JVM

import java.util.*

fun main(args : Array<String>) {
    val pq = PriorityQueue<Int>()

    val pq2 = PriorityQueue<Int>(Collections.reverseOrder())
    /* 삽입 */
    pq.add(4)
    pq.addAll(listOf(1, 3, 5, 6, 6))
    pq.offer(2)

    pq2.addAll(listOf(1, 3))
    pq2.add(4)
    pq2.add(5)
    pq2.add(6)
    pq2.add(6)

    println("삽입 성공 여부 ${pq2.add(2)}")
    println(pq)
    println(pq2)

    println("====================탐 색====================")
    println("pq 4 포함 여부 : ${pq.contains(4)}")
    println("pq Size : ${pq.size}")
    println("pq 맨 위 : ${pq.peek()}")
    println("pq2 맨 위 : ${pq2.peek()}")

    println("===================삭 제=====================")
    print("pq2 = ")
    while(pq2.isNotEmpty()) print("${pq2.poll()} ")     // 삭제 후 반환

    println("\n====================삭 제====================")
    print("pq = ")
    while (pq.isNotEmpty()) print("${pq.remove()} ")    // 삭제 후 반환
}

 

결 과

 

- 삽입을 하기 위해서는 add 또는 offer 함수를 사용한다.

 

또한, addAll 함수를 사용하여서 여러 개를 한번에 삽입할 수 있다.

 

 

 

 

contains 함수 : 인수로 받은 값의 포함 여부를 확인 가능하다.

 

size 프로퍼티 : Size를 얻을 수 있다.

 

 

 

 

 

- peek 함수를 사용하여서 현재 Top에 존재하는 원소를 읽을 수 있다.

 

 

 

 

 

- 삭제를 하기 위해서는 remove 또는 poll 함수를 사용한다. 

 

삭제 후 해당 값을 반환해 준다.

 

 

 

 

 


3. 참 조

 

 

PriorityQueue (Java SE 14 & JDK 14)

Type Parameters: E - the type of elements held in this queue All Implemented Interfaces: Serializable, Iterable , Collection , Queue public class PriorityQueue extends AbstractQueue implements Serializable An unbounded priority queue based on a priority he

docs.oracle.com

 

 

300x250