@@ -67,7 +67,7 @@ class PriorityQueue<T>(size: Int, val comparator: Comparator<T>? = null) : Colle
67
67
private fun resize () {
68
68
val old = arr
69
69
arr = Array <Comparable <T >? > (size * 2 , { null }) as Array <T ?>
70
- System .arraycopy(old , 0 , arr, 0 , size + 1 )
70
+ old.copyInto(arr , 0 , 0 , size)
71
71
}
72
72
73
73
public override fun isEmpty (): Boolean {
@@ -94,12 +94,16 @@ class PriorityQueue<T>(size: Int, val comparator: Comparator<T>? = null) : Colle
94
94
95
95
companion object {
96
96
private fun <T > greater (arr : Array <T ?>, i : Int , j : Int , comparator : Comparator <T >? = null): Boolean {
97
- if (comparator != null ) {
98
- return comparator.compare(arr[i], arr[j]) > 0
99
- } else {
100
- val left = arr[i]!! as Comparable <T >
101
- return left > arr[j]!!
97
+ // Remove nullability from values because comparator is not defined for nullables
98
+ val left = arr[i] ? : return false
99
+ val right = arr[j] ? : return true
100
+
101
+ comparator?.let {
102
+ return it.compare(left, right) > 0
102
103
}
104
+
105
+ val leftC = left as Comparable <T >
106
+ return leftC > right
103
107
}
104
108
105
109
public fun <T > sink (arr : Array <T ?>, a : Int , size : Int , comparator : Comparator <T >? = null) {
0 commit comments