@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 вернёт одинаковое число. Обратное не обязательно верно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы