在运行这些函数之后,我将绘制一个大小为6的哈希表的图表。
add(13)add(21)add(7)add(25)
我对哈希表非常不熟悉,但我想出了这个。
(7)(13)(21)(25)()()
我知道当你向哈希添加一个元素时,会为它分配一个特定的哈希码,但我不明白如何找到它。有人可以向我解释一下吗?
答案 0 :(得分:0)
要在@HovercraftFullOfEels上构建答案, not 在对象中正确实现hashCode()
,会导致HashMap
在添加该对象时表现不佳。换句话说,使用HashMap
的先决条件是所有潜在成员都已正确实施hashCode()
。
以下是有关实施hashCode()
的更多信息:https://www.google.com/search?q=implementing+hashcode+in+java
答案 1 :(得分:0)
像
一样定义你的表格 HashMap newMap = new Hashmap();
然后将元素放在你的内部
newMap.put(1, "what ever");
答案 2 :(得分:0)
不幸的是,哈希表需要两个参数来实际分配值。哈希表的工作方式如下:
hashtable.add(key, value);
密钥通过哈希函数运行,并将值放入哈希函数提供的索引处的数组中,如下所示:
public class FauxHashTable {
Object[] storage;
public FauxHashTable(int size)
{
storage = new Object[size];
}
public void add(Object key, Object value)
{
storage[hashFunction(key)] = value;
}
public int hashFunction(Object o)
{
// Does some magic and returns a unique identifying integer of the object! A mathematical function that returns a different integer for EVERY object put in!
}
}
所以,你的问题对我没有意义,因为你给一个只有一个参数的add函数。我认为您添加Java标记的事实让很多回答者感到困惑,因为当使用Java表示散列表时,通常意味着HashMap类。 HashMap是一个哈希表的实现,但我不认为它是你在这里所要求的。
既然你说"我要画",我认为这是作业,所以我会尝试而不是直接给你答案。