我有一个值的映射,其中键是一个数字,值是该数字在字符串中出现的次数
示例:
6644241333431
{6:2,4:4,2:1,3:4,1:2}我想要得到出现次数最多的数字,如果两个数字相等,那么就得到较小的那个。我觉得可以用".sortedBy{ (key,value) -> ... }“甚至"compareBy{ it.first }.thenBy{it.second}”来完成。
发布于 2021-09-30 22:17:11
您几乎可以按照您所描述的方式来完成此操作:
map.entries
.sortedWith(compareByDescending<Map.Entry<Int, Int>> { it.value }.thenByDescending { it.key })它返回一个列表,而不是一个映射。如果需要,您可以将其转换回map。
如果你只需要一个最大值,那么排序实际上是不必要的,你可以用类似的方法找到它:
map.maxOfWith(compareBy<Map.Entry<Int, Int>> { it.value }.thenBy { it.key }) { it }https://stackoverflow.com/questions/69399294
复制相似问题