使用java从map中获取前导键

时间:2017-11-26 06:43:17

标签: java iterator treemap

我有一张地图

    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键)?

任何想法

2 个答案:

答案 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);