我有一张地图
TreeMap<Integer, Float> matrixMap = new TreeMap<Integer, Float>();
结果
{12=0.4, 24=0.63, 36=0.86, 48=1.12, 60=1.39, 72=1.67, 84=1.98, 96=2.31, 108=3.3, 120=3.84, 132=4.4, 144=5.0, 156=5.62, 168=6.28, 180=6.97, 192=7.34,
204=7.74, 216=8.15, 228=8.07, 240=8.33}
现在,我想获取一个键25的值。理想情况下,25在结果中不可用。所以,我希望获得24&amp;的价值。 36。
duration = 25
我能够得到36的值,但我怎样才能得到36的前身。
for(Map.Entry<Integer, Float> entry : matrixMap.entrySet()) {
if(duration < entry.getKey())
{
max = entry.getValue();
break;
}
}
如何获得直接的前任值(在这种情况下为24键)?
任何想法
答案 0 :(得分:2)
要获取第一个键的值&gt; = 25:
matrixMap.tailMap(25).values().next()
或:
matrixMap.get(matrixMap.tailMap(25).firstKey())
获取第一个键的值&lt; = 25:
matrixMap.get(matrixMap.headMap(25).lastKey())
答案 1 :(得分:0)
我使用以下方式解决了问题。
int above = matrixMap.ceilingKey(duration);
int below = matrixMap.floorKey(duration);
logger.info("above="+above+", below="+below);
min = insuranceMatrixMap.get(below);
max = insuranceMatrixMap.get(above);