@Domus

Как реализовать HashMap, в котором key объект мной созданного класса?

Добрый день!

Подскажите пожалуйста, как можно использовать объект собственного класса в качестве ключа? В голову приходит только делать какое-то однозначное преобразование значения переменных класса Location. Например, определить метод toString() и использовать String в качестве ключа HashMap. Но в этом случае затруднительно дальнейшее использование entry.getKey(). В коде указал метод toString(), но не использовал его. Есть ли более красивые варианты выхода из данной ситуации?

class Hero{
    // Описание класа
}
class Location{
    private int m;
    private int n;

    int getM() {
        return m;
    }
    int getN(){
        return n;
    }
    String toString(){
        return "" + m + n;
    }
}

public class Main {

    public static void main(String[] args) {

        HashMap<Location, Hero> map = new HashMap<>();
    }
}
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Нужно консистентно реализовать методы equals и hashCode. Консистентно значит, если equals вернул true, то hashCode вернёт одинаковое число. Обратное не обязательно верно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы