有没有一种有效的方法来搜索哈希表中的值而不知道用于存储它的密钥? 除了创建一个单独的哈希表,将密钥存储为值并且值是键时,我似乎无法想到任何其他内容。
答案 0 :(得分:2)
如果没有任何其他数据结构,您将必须遍历整个哈希表以查找值。由于哈希表完全由键的哈希值索引,因此没有有效的方法可以找到一些值。
如果你的哈希表存储为一个链表列表(即separate chaining),通常是哈希表,你只需要两个(嵌套)循环 - 一个用于数组,一个用于链接-list在某个给定的索引处。 (如果你的哈希表使用open addressing,即一个元素数组,你只需要一个循环。)
如果您被允许使用其他数据结构,那么是的,为key创建一个单独的值哈希表是个好主意。
答案 1 :(得分:0)
containsValue(Object value)
方法用于检查此地图是否将一个或多个键映射到指定值。
Hashtable htable = new Hashtable();
htable.put(1, "A");
htable.put(2, "B");
boolean isavailable=htable.containsValue("A");
// display search result
System.out.println("Hash table contains value 'A': "+isavailable);