首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对Map<Int排序,按值排序,然后按键排序

对Map<Int排序,按值排序,然后按键排序
EN

Stack Overflow用户
提问于 2021-09-30 22:07:44
回答 1查看 35关注 0票数 0

我有一个值的映射,其中键是一个数字,值是该数字在字符串中出现的次数

示例:

代码语言:javascript
运行
复制
6644241333431
{6:2,4:4,2:1,3:4,1:2}

我想要得到出现次数最多的数字,如果两个数字相等,那么就得到较小的那个。我觉得可以用".sortedBy{ (key,value) -> ... }“甚至"compareBy{ it.first }.thenBy{it.second}”来完成。

EN

Stack Overflow用户

回答已采纳

发布于 2021-09-30 22:17:11

您几乎可以按照您所描述的方式来完成此操作:

代码语言:javascript
运行
复制
map.entries
    .sortedWith(compareByDescending<Map.Entry<Int, Int>> { it.value }.thenByDescending { it.key })

它返回一个列表,而不是一个映射。如果需要,您可以将其转换回map。

如果你只需要一个最大值,那么排序实际上是不必要的,你可以用类似的方法找到它:

代码语言:javascript
运行
复制
map.maxOfWith(compareBy<Map.Entry<Int, Int>> { it.value }.thenBy { it.key }) { it }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69399294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档