Hey I want to use custom comparator in priority queue in kotlin. I have data class Product.kt ```d...
v

Vivek Modi

almost 4 years ago
Hey I want to use custom comparator in priority queue in kotlin. I have data class Product.kt
data class Product(val value: String? = null, val price: String? = null) {
    var priceInLong = price?.toLong()
}
I want to create a min heap where price value will be minimum. I am creating the object but it giving me some kind of error
fun main() {
    var queue = PriorityQueue<Long> { p1: Product, p2: Product ->
        p1.priceInLong?.let {
            p2.priceInLong?.minus(it)
        }
    }

    val list = listOf(
        Product("1", "4.83"),
        Product("2", "4.53"),
        Product("3", "3.54"),
        Product("4", "3.66"),
        Product("5", "5.16")
    )
}
Error
None of the following functions can be called with the arguments supplied.
<init>((MutableCollection<out TypeVariable(E)!>..Collection<TypeVariable(E)!>?))   where E = TypeVariable(E) for    constructor PriorityQueue<E : Any!>(c: (MutableCollection<out E!>..Collection<E!>?)) defined in java.util.PriorityQueue
<init>(Comparator<in TypeVariable(E)!>!)   where E = TypeVariable(E) for    constructor PriorityQueue<E : Any!>(comparator: Comparator<in E!>!) defined in java.util.PriorityQueue
<init>(PriorityQueue<out TypeVariable(E)!>!)   where E = TypeVariable(E) for    constructor PriorityQueue<E : Any!>(c: PriorityQueue<out E!>!) defined in java.util.PriorityQueue
<init>(SortedSet<out TypeVariable(E)!>!)   where E = TypeVariable(E) for    constructor PriorityQueue<E : Any!>(c: SortedSet<out E!>!) defined in java.util.PriorityQueue
<init>(Int)   where E = TypeVariable(E) for    constructor PriorityQueue<E : Any!>(initialCapacity: Int) defined in java.util.PriorityQueue