1

ハッシュテーブルのキーとその値の間に値が存在するかどうかを確認する方法は?

値がハッシュテーブルに存在するかどうか、またはキーとその値の間に存在するかどうかを確認したい

次のコードを使用して、値がキーまたは値として存在するかどうかを確認しました

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

しかし、キーとそれに対応する値の間に存在するかどうかを確認するにはどうすればよいでしょうか?

4

3 に答える 3

1

したがって、基本的には、マップを平坦化し、特定の値が最小のキーまたは値と最大のキーまたは値の間の範囲に含まれているかどうかを確認します。

すべてのキーと値をaSortedSetに入れることができます。たとえば、 aTreeSetには、最低/最高のアイテムを取得するための メソッド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());

クエリごとにセットを再作成することを避けるために、効率のためにマップと並行してセットを設定できます。

于 2013-06-28T08:36:01.823 に答える
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;
}
于 2013-06-28T09:00:15.687 に答える
0

Try this,

  1. Iterate the HashTable
  2. store the key and value in diff temp
  3. Then compare the value in between the tempkey and tempvalue
于 2013-06-28T08:38:30.520 に答える