在toSortedMap调用后更改Kotlin Map <String,List <Object >>的值

时间:2019-07-30 13:19:24

标签: dictionary kotlin

我有这样一张地图

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值进行比较。

0 个答案:

没有答案