hashCode возвращает целочисленное int, которое характеризует объект. Грубо говоря, если у объекта есть два целочисленных поля, то мы должны как-то засунуть их в hashcode. Например, перемножить. Но засунуть нужно так, чтобы как можно меньшее количество других наборов переменных могло совпадать. И вот, у нас есть hashCode. Если объекты равны, то логично, что и hashCode'ы должны быть равны. Но если hashCode'ы равны, то объекты не обязательно должны быть равны, ведь мы не можем впихнуть все значения полей в одну переменную int, так?
Значит, если hashCode'ы равны, то шанс того, что объекты равны, очень сильно(зависит от того, как грамотно мы напишем алгоритм метода hashCode) повышается. А если они не равны, то объекты и вовсе не могут быть равны.
Мы знаем, что метод equals очень много жрет(так как сравнивает все поля объектов). Поэтому вместо использования equals для каждого сравнения мы сначала используем ОЧЕНЬ(относительно) дешевую операцию сравнения hashcode'ов объектов, которая ОЧЕНЬ повышает шанс того, что объекты равны. И только потом производим операцию сравнения equals, чтобы сказать точно об их идентичности.
Именно так и поступают коллекции HashMap, HashTable, HashSet.
Все ли так, как я написал?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть Activity и несколько Fragment которые открываются внутри этого активитиToolbar находится в активити
я сериализую объект KeyEvent, превращаю его в строку, а затем сохраняю это значение в бд Oracle, затем читаю строку из бд и пытаюсь десериализовать...