list - 如何在Kotlin中按其值对HashMap <String,Int>顺序进行排序?

标签 list sorting kotlin hashmap treemap

这是我的示例,如何在Kotlin中做到这一点?

var hashMapForTry = HashMap<String,Int>()

hashMapForTry.put("Hi",5)
hashMapForTry.put("What",7)
hashMapForTry.put("How",2)
hashMapForTry.put("Go",1)
hashMapForTry.put("Ford",9)

最佳答案

您无法对HashMap进行排序,因为它不能保证将其条目以任何特定顺序进行迭代。但是,您可以将项目排列为LinkedHashMap,以保持插入顺序:

    val resultMap = hashMapForTry.entries.sortedBy { it.value }.associate { it.toPair() }

    println(resultMap)

此处hashMapForTry的条目按条目值排序,然后 associate 函数将条目列表转换为映射,该映射保留该列表中条目的顺序。

该函数的结果类型为Map<String, Int>。如果需要进一步改变结果,可以使用 associateTo 函数并指定一个空的目标LinkedHashMap作为参数:
....associateTo(LinkedHashMap()) { ... }

关于list - 如何在Kotlin中按其值对HashMap <String,Int>顺序进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097419/

相关文章:

ios - 导入gradle插件生成的cocoapods时,Xcode显示快速的编译器错误

python - 斐波那契数列从a点到b点?

python - 判断输入列表是否严格递增

r - 在 ifelse R data.table 中使用 apply

c:找到两个简单列表之间的连接(公共(public)节点)

android - SceneRenderer中的Kotlin内联函数

php - 排序desc后mysql中的下一条和上一条记录

r - 使用每秒 i (i= 1, 3, 5, ....) 切换列中每一行 i 和 i+1 的顺序

ruby-on-rails - 当使用 update_attributes 更新资源时,acts_as_list 是否应该自动重新排序项目?

Android AIDL : Project crash after change code to kotlin from java