微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

导航地图:BigDecimal 或 NextKey 上的lowerKey() 方法?

如何解决导航地图:BigDecimal 或 NextKey 上的lowerKey() 方法?

假设我有一个逆序(降序)的树形图

TreeMap <BigDecimal,Integer> m = new TreeMap <>(Comparator.reverSEOrder);

假设我有密钥(在 BigDecimal 中)

(100.00,75.50,50.50)

如果我调用方法(带有大十进制参数)

m.lowerKey(100.00)

它将输出空值。我想这与 BigDecimals 的比较有关,但是我怎么能让它输出 75.50 呢?或者更简单地说,是否有可能在给定当前键的情况下获得下一个键,因为它是有序的?

一种可能的解决方案是使用 Double 作为键。但是我正在处理金钱和它们之间的转换听起来有点乏味。(另外我在做一些算术所以 double 容易出错)

注意:没有 lambdas / 函数式构造和外部库!

解决方法

我怎样才能让它输出 75.50?

您将 TreeMap 定义为使用反向比较器,因此 100.00 低于 75.50。这意味着您需要在此处使用 higherKey()

给定当前密钥是否有可能获得下一个密钥,因为它是有序的?

是的,但您需要注意顺序。如果您提供了一个比较器,这将定义排序以及 TreeMap 认为较低或较高的内容。另请注意,比较器对重复检测也有影响,即任何因比较器而相等的键都将与 TreeMap 重复。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。