java - 可导航地图: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 重复。
推荐阅读
- java - 您可以在不手动编辑 pom.xml 的情况下设置主清单吗?
- angular - 从 PrimeNG 数据表中获取数据
- python - 如何在 nltk Python 中使用 sentiwordnet 获取 ngram 的同义词
- arrays - 在R中加入多个数组
- algorithm - 距离算法 - 通关所有关卡所需的最少硬币
- google-chrome - H264 视频源不在任何浏览器中播放
- jquery - IFTTT 访问控制允许来源
- postgresql - 如何使用表主ID在postgres中进行分页
- javascript - 如何在 ReactJS 中处理多选表单
- php - 试图将获取值发送到模态