检查密钥与哈希表中的值之间是否存在值

时间:2013-06-28 08:28:41

标签: java hashtable contains

如何检查密钥及其在哈希表中的值之间是否存在值?

我想检查哈希表中是否存在值,或者是否存在任何键及其值

之间的值

我使用以下代码检查值是否作为键或值

存在
if(table.containsKey(val) || table.containsValue(val))

但是如何检查它是否存在于任何键及其相应的值之间?

3 个答案:

答案 0 :(得分:1)

所以基本上你想要展平地图并检查给定值是否包含在最低键或值与最大键或值之间的范围内。

您可以将所有键和值放在a SortedSet中,例如TreeSet,其中first()last()方法可以检索最低/最高的项目。

看起来像这样:

SortedSet<Integer> set = new TreeSet<> ();
set.addAll(map.keySet());
set.addAll(map.values());

//return true if input within the range
return (input >= set.first() || input <= set.last());

您可以与地图并行填充集合以提高效率,以避免为每个查询重新创建集合。

答案 1 :(得分:0)

试试这个,

  1. 迭代HashTable
  2. 将键和值存储在diff temp
  3. 然后比较tempkey和tempvalue之间的值

答案 2 :(得分:0)

这也有效:

public static <T extends Comparable> boolean hasValueBetween(Map<T, T> map, T value) {
    for(Map.Entry<T, T> entry : map.entrySet()) {
        if (entry.getKey().compareTo(value) <= 0 && entry.getValue().compareTo(value) >= 0) {
            return true;
        }
    }

    return false;
}