使用Groovy按降序对Map值进行排序

使用Groovy按降序对Map值进行排序,第1张

概述我有一个Map< String,Integer>其条目(键)需要按降序排列.例如,如果地图如下所示: "a" => 5"b" => 3"c" => 12"d" => 9 排序后需要看起来像: "c" => 12"d" => 9"a" => 5"b" => 3 迄今为止我最好的尝试: def test() { Map<String,Integer> toSort = new Ha 我有一个Map< String,Integer>其条目(键)需要按降序排列.例如,如果地图如下所示:

"a" => 5"b" => 3"c" => 12"d" => 9

排序后需要看起来像:

"c" => 12"d" => 9"a" => 5"b" => 3

迄今为止我最好的尝试:

def test() {    Map<String,Integer> toSort = new HashMap<String,Integer>()    toSort.put("a",5)    toSort.put("b",3)    toSort.put("c",12)    toSort.put("d",9)    Map<String,Integer> sorted = sortMapDesc(toSort)    sorted.each {        println "${it.key} has a value of ${it.value}."    }}def sortMapDesc(Map<String,Integer> toSort) {    println "Sorting..."    println toSort    // The map of properly sorted entrIEs.    Map<String,Integer> sorted = new HashMap<String,Integer>()    // Keep scanning the map for the key with the highest value. When we find    // it,add it as the next entry to the 'sorted' map,and then zero it out    // so it won't show up as the highest on subsequent scans/passes. Stop scanning    // when the entire 'toSort' map contains keys with zeros.    while(!mAPIsAllZeros(toSort)) {        int highest = -1        String highestKey = ""        toSort.each {            if(it.value > highest) {                highest = it.value                highestKey = it.key            }        }        toSort.put(highestKey,0)        sorted.put(highestKey,highest)    }    sorted}def mAPIsAllZeros(Map<String,Integer> tocheck) {    tocheck.values().every{!it}}

当我运行test()时,我得到以下输出:

Sorting...[d:9,b:3,c:12,a:5]d has a value of 9.b has a value of 3.c has a value of 12.a has a value of 5.

我在哪里错了?

解决方法 做就是了:

​def m = [a:​5,b:12,c:3,d:9]def sorted = m.sort { a,b -> b.value <=> a.value }
总结

以上是内存溢出为你收集整理的使用Groovy按降序对Map值进行排序全部内容,希望文章能够帮你解决使用Groovy按降序对Map值进行排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存