Java HashMap找到最佳匹配键

时间:2012-04-06 20:04:32

标签: java floating-point hashmap

我有一个带有Float键和String值的Java HashMap。现在给出一个不在HashMap中的Float,我怎样才能找到与给定的Float最相似的键?

4 个答案:

答案 0 :(得分:8)

听起来像是java.util.NavigableMap的一个实现的工作。

答案 1 :(得分:1)

使用浮动作为HashMap中的键是一个非常糟糕的主意!

答案 2 :(得分:0)

我认为你最好使用一个简单的数组/ ArrayList,其中的条目按键排序并执行Collections.binarySearch()。如果未找到该条目,则返回最近的邻居。

答案 3 :(得分:0)

最简单的方法

 HashMap<Float, String> map = new HashMap<Float, String>();

    Float newFloat = 123F;

    Float minDif = null;
    Float findedValue = null;

    for (Float key : map.keySet()) {
        Float dif = Math.abs(key - newFloat);
        if (minDif != null) {
            if (dif < minDif) {
                minDif = dif;
                findedValue = key;
            }
        } else {
            minDif = dif;
            findedValue = key;
        }
    }