如何检查密钥及其在哈希表中的值之间是否存在值?
我想检查哈希表中是否存在值,或者是否存在任何键及其值
之间的值我使用以下代码检查值是否作为键或值
存在if(table.containsKey(val) || table.containsValue(val))
但是如何检查它是否存在于任何键及其相应的值之间?
答案 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)
试试这个,
答案 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;
}