Я написал метод удаления для HashMap, и я получаю сообщения об ошибках, которые не возвращают правильное значение.
Инструкции гласят:
Метод 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;
}
}
}
Сообщение, которое я получаю из-за ошибки, состоит в том, что мой размер неверный, а также я возвращаю неправильное значение.Могу ли я получить помощь по этому вопросу?Я не знаю, где возникает проблема.