Java 向哈希映射添加元素

Java 向哈希映射添加元素,java,hash,map,add,bucket,Java,Hash,Map,Add,Bucket,在运行这些函数之后,我将绘制一个哈希表的图表,大小为6 增补(13)增补(21)增补(7)增补(25) 我对哈希表很不熟悉,但我想到了这个 (7) (13)(21)(25)() 我知道当你把一个元素添加到一个散列中时,它会被分配一个特定的散列码,但我不知道如何找到它。有人能给我解释一下吗?以@hovercraftfullofels答案为基础,如果不在对象中正确实现hashCode(),将导致HashMap在添加该对象时表现不好。换句话说,使用HashMap的先决条件是所有潜在成员都正确实现了ha

在运行这些函数之后,我将绘制一个哈希表的图表,大小为6

增补(13)增补(21)增补(7)增补(25)

我对哈希表很不熟悉,但我想到了这个

(7) (13)(21)(25)()


我知道当你把一个元素添加到一个散列中时,它会被分配一个特定的散列码,但我不知道如何找到它。有人能给我解释一下吗?

以@hovercraftfullofels答案为基础,如果不在对象中正确实现
hashCode()
,将导致
HashMap
在添加该对象时表现不好。换句话说,使用
HashMap
的先决条件是所有潜在成员都正确实现了
hashCode()

下面是有关实现
hashCode()
的更多信息:

定义表

 HashMap newMap = new Hashmap();
然后把元素放在你的身体里

 newMap.put(1, "what ever");

不幸的是,哈希表需要两个参数来实际赋值。哈希表的工作原理如下:

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!
    }
}
所以,你的问题对我来说没有意义,因为你给出的加法函数只有一个参数。我认为您添加了Java标记这一事实让很多回答者感到困惑,因为当一个人说用Java创建哈希表时,通常指的是HashMap类。HashMap是一个哈希表的实现,但我不认为这正是您在这里要问的


既然你说“我要画画”,我想这是家庭作业,所以我会尽量不直接给你答案。

不要想有索引的
HashMap
。它是无序的,因此没有可以直接访问的索引系统。如果顺序很重要的话,
TreeMap
可能更适合您的需要。map*我同意,hashmap不是用于此目的的wya