Предположим, у меня есть HashMap:HashMap - используя пользовательские данные объекты
HashMap<MyKey, Integer> HM = new HashMap<MyKey, Integer>();
MyKey соответствует объекту данных с двумя целочисленными элементами (и конструктор для прохождения двух целых чисел).
HM.put(new MyKey(1,1234), 1); // this seems to work...
, но я не могу использовать его:
System.out.println(HM.containsKey(new MyKey(1,1234)));
Я получаю ложь.
Возможно, у HashMap есть пользовательский объект данных для ключа? Что мне не хватает? Спасибо ...
Если я попытаюсь: System.out.println (HM.containsKey (MyKey (1,1234))); –
Затем я получаю «не могу найти символ» (ссылаясь на MyKeys). Лингвистически я нахожу довольно странным, что могу поместить элемент в него, но тогда у меня действительно должен быть первоначально заданный элемент, а не его копия. В любом случае, спасибо за помощь. Я повторяю HashList, чтобы найти фактический элемент. –
@n как Я отредактировал свой ответ. При переопределении равных, hashCode также должен быть переоценен. Также см. Это: http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java Надеюсь, что это поможет. – Shobit