[kotlin] 코틀린에서 제네릭을 사용하여 우선순위 큐(Priority Queue)를 다루는 방법은 어떻게 되는가?
우선순위 큐(Priority Queue)는 데이터를 넣은 순서나 크기 순이 아닌, 우선순위에 따라 처리하는 자료 구조입니다. 코틀린에서는 제네릭을 활용하여 우선순위 큐를 다룰 수 있습니다.
제네릭을 사용한 우선순위 큐 클래스 정의하기
코틀린에서 제네릭을 사용하여 우선순위 큐를 다루기 위해서는 PriorityQueue
클래스를 정의해야 합니다. 아래는 제네릭을 사용하여 우선순위 큐 클래스를 정의하는 예시 코드입니다.
class PriorityQueue<T : Comparable<T>> {
private val queue: MutableList<T> = mutableListOf()
fun add(item: T) {
queue.add(item)
queue.sort()
}
fun poll(): T? {
if (queue.isNotEmpty()) {
return queue.removeAt(0)
}
return null
}
}
위 예시 코드에서 T : Comparable<T>
는 제네릭 타입 T
가 Comparable
인터페이스를 구현하도록 제한합니다. 이는 우선순위 큐에서 요소들을 비교하기 위해 필요한 조건입니다.
제네릭 우선순위 큐 활용하기
이제 우선순위 큐를 활용하여 데이터를 추가하고 꺼내는 방법을 살펴봅시다.
우선, PriorityQueue
를 생성하고 제네릭 타입을 명시합니다.
val priorityQueue = PriorityQueue<Int>()
우선순위 큐에 데이터를 추가할 때는 add
메서드를 사용합니다.
priorityQueue.add(10)
priorityQueue.add(5)
priorityQueue.add(20)
가장 우선순위가 높은 데이터를 꺼내올 때는 poll
메서드를 사용합니다.
val highestPriorityItem = priorityQueue.poll()
이제 제네릭을 사용하여 우선순위 큐를 다루는 방법에 대해 알게 되었습니다. 제네릭을 활용하면 여러 다양한 타입의 데이터에 대해 우선순위 큐를 쉽게 활용할 수 있습니다.