java - 在 HashMap 中找到最接近的答案

标签 java hashmap

我想在 HashMap 中搜索一个键并找到离该键最近的一个!

    HashMap<Long, Object> map = new HashMap<Long , Object>();

所以基本上我想搜索一个 long,如果它不存在于 map 中,找到最接近该 long 值的匹配项! 我该怎么做!?

提前致谢

最佳答案

如果不遍历它的所有键,你就不能用 HashMap 来做到这一点。我假设这不是您想要的,所以这里有一种使用 TreeMap 的方法:

TreeMap<Long,Object> map = new TreeMap<Long,Object>();
Long key = 42;
Map.Entry<Long,Object> low = map.floorEntry(key);
Map.Entry<Long,Object> high = map.ceilingEntry(key);
Object res = null;
if (low != null && high != null) {
    res = Math.abs(key-low.getKey()) < Math.abs(key-high.getKey())
    ?   low.getValue()
    :   high.getValue();
} else if (low != null || high != null) {
    res = low != null ? low.getValue() : high.getValue();
}

关于java - 在 HashMap 中找到最接近的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482988/

相关文章:

java - 没有找到 ImageView?

java - HashMap - contains 和 get 方法不应该一起使用

java - 处理 XML 数据的特殊字符以在 Java 中解析

Groovy 中的 java.util.ConcurrentModificationException

java - OpenFeint 与 cocos2d-x(iOS 和 Android)

Java == 运算符适用于列表和集合比较,但在 String 和 StringBuilder 比较时给出编译时错误

android - 为什么列表中的值被新值覆盖?

java - HashMap "WriteOnce"实现

java - 如何转换 hashmap.values().toArray() ,其中这些 value() 也是 HashMap ?

java - 无法将数据添加到非 Activity 类中声明的 HashMap