2013-06-28 43 views
1

如何檢查密鑰與哈希表中的值之間是否存在值?檢查密鑰與哈希表中的值之間是否存在值

我想檢查的值是存在於哈希表或在任何關鍵的並且其值

我用下面的代碼之間,以檢查是否存在值作爲鍵或值

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

但是如何檢查它是否存在於任何鍵和它的相應值之間?

+2

您能否澄清「* in補間任何密鑰及其相應的值*「? – assylias

+0

@ user2133404對我來說似乎是迭代器問題;如果你知道如何使用它們。 – ha9u63ar

+0

假設值爲6. 如果散列表中包含鍵5和值8,則返回true – user2133404

回答

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()); 

你可以填充平行設置的與地圖的效率,以避免重現每一個查詢集。

+0

謝謝,它工作:) – user2133404

0

試試這個,

  1. 迭代哈希表
  2. 店DIFF臨時鍵和值
  3. 然後在tempkey之間的比較值,tempvalue
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; 
} 
相關問題