如何为哈希编写删除方法以删除值?

How to write a remove method for hashes to remove a value?

我为 HashMap 编写了一个删除方法,但出现错误,它不是 return 正确的值。

说明如下:

remove(Object) 方法应该移除并 return 如果在映射中找到与给定键关联的值。删除的条目应替换为 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;
    }
 }
}

我从错误中收到的消息是我的尺码不正确,而且我 return 的值错误。我可以得到帮助吗?我不知道问题出在哪里。

public V remove(Object key)
{
    int h = hashFunction(key);

    while (elementData[h] != null)
    {
        if (elementData[h].getKey() != null && elementData[h].getKey().equals(key)) // linear probing to search
        {
            V store;
            store = elementData[h].value;
            elementData[h] = REMOVED;
            size--;
            return store;
        }
        h = (h + 1) % elementData.length;
    }
    return null;
}

我几乎做到了,我只是想 return null 并在最后将值存储在不同的变量中。