如何为哈希编写删除方法以删除值?
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 并在最后将值存储在不同的变量中。
我为 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 并在最后将值存储在不同的变量中。