Это потому, что kotlin.Int
реализует kotlin.Comparable<Int>
, поэтому верхняя граница типа T
в функции sort
удовлетворена, поскольку список T
является списком Int
.
Вместо этого HashMap<K, V>
не реализует Comparable<HashMap<K, V>>
, поэтому верхняя граница типа T
в функции sort
не выполняется, поскольку список T
является списком HashMap<Int, String>
.
Чтобы сделать его Comparable
, вы можете создать свой собственный HashMap
, который также Comparable
:
class ComparableHashMap<K, V>: HashMap<K, V>(), Comparable<HashMap<K, V>> {
override fun compareTo(other: HashMap<K, V>): Int {
// Implement comparison.
}
}