Хэш-карта, содержащая проверку методаeyKey () - PullRequest
0 голосов
/ 14 октября 2019

Когда я вызываю containsKey (значение), он возвращает false, когда ключ находится на карте. Я был бы признателен, если бы кто-нибудь мог проверить мой код!

Я уже пытался распечатать их ключ и hashmap, метод toString, и они Key находятся на карте.

    HashMap<IdentifierInterface, T> hm = new HashMap<IdentifierInterface, T>();

    public T getMemory(String v) {

        if(hm.containsKey(v)){

            return hm.get(v);
        }

        return null;
    }

Методы Hashcode и Equalsв IdentifierInterface:

public int hashCode() {
    return identifier.toString().hashCode();
}


public boolean equals(Object toCompare) {
    if (toCompare instanceof Identifier) {
        if (toCompare.hashCode() == this.hashCode()) {
            return true;
        }
    }
    return false;
}

Ожидаемый результат - true, а факт - false в getMemory ().

1 Ответ

0 голосов
/ 14 октября 2019

Клавиши HashMap имеют тип IdentifierInterface, но вы звоните containsKey(String).

. В вашем equals() вы, тем не менее, используете instanceof Identifier, который всегда будет возвращать false, когдаString передается.

Так что превратите ваш String в IdentifierInterface (или вместо этого сделайте ключи Strings).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...