如何解决导航地图: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 举报,一经查实,本站将立刻删除。