"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值进行排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)