2

我在带有标志的地图中有百分比值,例如- [44.4: true, 0.0: false, 44.4: false, 38.9: false, 0.0 false]

我想按降序对它们进行排序。我正在使用的代码丢失了重复的键。我不想丢失它们,因为我想在输出中显示所有值。

def secDisc = [:]
def discount = plan."${section}"
if(plan."${section}"!=null && plan.bluePlan)
secDisc."$discount" = true
else if(plan."${section}"!=null && !plan.bluePlan)
secDisc."$discount" = false
secDisc = secDisc.sort {a, b -> b.key <=> a.key}
secDisc.each{disc, flag->

        println "disc- $disc flag- $flag"
 }

当我打印它时,只剩下一个 0.0 值。谢谢!

4

1 回答 1

3

我会重新考虑您正在使用的数据结构类型。您将地图的值设为布尔值,但您试图将多个相同的键放入地图中。这行不通。

相反,我会尝试将值设为布尔值列表,因此您的示例变为:

 [44.4: [true, false], 0.0: [false, false], 38.9: [false]]

这将确保重复的密钥永远不会丢失。此外,排序会更简单。此外,正如@tim_yates 提到的,我会将您的键转换为具有固定小数位数的字符串,以确保浮点数学不会产生在第 12 位十进制数字中略微偏离的值。

您没有提到排序对于具有不同值的相同键是否重要。

于 2013-06-14T19:25:47.913 回答