如何编写用于哈希值的删除方法以删除值?

时间:2019-05-04 20:28:54

标签: java hash hashmap hashset hashcode

我为HashMap编写了一个remove方法,但出现错误,因为它没有返回正确的值。

说明如下:

如果在地图上找到键,则remove(Object)方法应删除并返回与给定键关联的值。删除的条目应替换为REMOVED属性。如果地图不包含密钥,则此方法无效。

因此,这是我代码的一部分,与我的代码相关,因此不是长代码。

public class HashMap<K,V>
{
private final double MAX_LOAD_FACTOR = 0.75;
private HashEntry[] elementData;
private final HashEntry REMOVED = new HashEntry(null, null);
private int size;

public HashMap()
{
    this.elementData = new HashMap.HashEntry[10];
    size = 0;
}
public V remove(Object key)
{
    int h = hashFunction(key);
    while (elementData[h] != elementData[0] && elementData[h] != elementData[h].getKey())
    {
        h = (h + 1) % elementData.length;
    }
    if (elementData[h] == elementData[h].getKey())
    {
        elementData[h] = REMOVED;   // "removed" flag value
        size--;
        return elementData[h].getValue();
    }
    return elementData[h].getValue();
}
public class HashEntry
{
    private K key;
    private V value;

    public  HashEntry(K key, V value)
    {
        this.key = key;
        this.value = value;
    }
    public K getKey()
    {
        return key;
    }
    public V getValue()
    {
        return value;
    }
 }
}

我从错误中收到的消息是我的尺寸不正确,并且返回的值不正确。我可以在这方面寻求帮助吗?我不知道问题出在哪里。

1 个答案:

答案 0 :(得分:1)

del module_name

我几乎拥有它,我只是想返回null并在最后将值存储在另一个变量中。