У меня есть следующее TreeMap:
TreeMap<String, Integer> distances = new TreeMap<String, Integer>();
и содержит обе строки, "Face" и "Foo", с соответствующими значениями, такими как:
System.out.println(distances);
Урожайность:
{Face=12, Foo=2}
Однако distances.get(Face)
возвращает null
, хотя distances.get(Foo)
правильно возвращает 2. Ранее distances.get(Face)
работал, но по какой-то причине он перестал работать. Примечание. Я печатаю карту вправо перед вызовом get () для обоих ключей, поэтому случайно не изменил значение Face на null. Кто-нибудь еще сталкивался с этой проблемой? Что я могу сделать? Я ужасно переживаю, пытаясь выяснить, как решить эту проблему.
ПРИМЕЧАНИЕ. В реальном коде я на самом деле не использую строки, а другой объект, поэтому это: TreeMap<Object, Integer>
. Так что это не просто путаница имен переменных и буквенных строк.
ВТОРОЕ ПРИМЕЧАНИЕ: Я также чувствую себя довольно уверенно относительно моих реализаций hashcode()
и equals()
для объекта, который я использую. (Кроме того, если мои реализации не были правильными, разве это не сработало бы с самого начала? Вместо того, чтобы перестать работать случайным образом?)