Я пытаюсь использовать HashMap с классом Cell в качестве ключа. Однако после помещения элемента в HashMap вызов, содержащийся в элементе, вернет false.HashMap не возвращает значения на основе ключа
public static void main(String args[]) {
HashMap<Cell, String> map = new HashMap<Cell, String>();
map.put(new Cell(0,0), "Bob");
System.out.println(map.containsKey(new Cell(0,0)));
System.out.println(new Cell(0,0).equals(new Cell(0,0)));
}
Это печатает ложь и правда, где он должен печатать верно и верно, так как в соответствии с картой документы ContainsKey использует .equals(). Что я делаю не так?
Вам необходимо правильно реализовать 'хэш-код()' а. –
или не использовать equals, hashCode вообще. Если вы переопределите equals, вы также должны реализовать hashCode – Anton
Если вы не переопределите 'hashCode()', тогда он просто будет использовать метод Object по умолчанию, поэтому они разные для каждого объекта, несмотря на одинаковые значения. –