我有这样一张地图
Map<String, List<Object>>
当我使用
map.toSortedMap(comparator)
并通过键比较值,我得到了排序的映射,但是每个值列表中的对象数量也发生了变化(减少)。真奇怪在toSortedMap方法的幕后,我使用给定的比较器创建TreeMap,我不知道TreeMap的内部原理,但我假设任何映射都不应更改值,而只能使用键进行操作。对于TreeMap来说这是否可行,还是Kotlin库中的错误?
编辑 代码,我在以下位置遇到此问题:
val categoriesKeys = listOf("key1", "key2", etc)
val categoriesKeysOrdersMap = mapOf("key1" to 0, "key2" to 1, etc)
val model = listOf(MyModel(..), MyModel(..), etc)
val categoryKeyToModelsMap = categoriesKeys
.asSequence()
.map { key ->
key to model.filter {
it.categories?.contains(key) == true
}
}
.filter { it.second.isNotEmpty() }
.toMap()
.toSortedMap(compareBy { categoriesKeysOrdersMap[it] })
在toMap步骤中,我有想要但未排序的地图,但是在toSortedMap之后,我的数据被弄乱了。比较器使用类别中的键按categoryKeysOrdersMap中的int值进行比较。