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

Navigable Maps: lowerKey() method on BigDecimal or NextKey?

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

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/函数结构和外部库!

how could I make it to output 75.50 instead?

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

Is it possible to get the next key given the current key, since it is ordered?

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