Помогите разобраться с этими "функциями", не очень понял зачем они нужны, как они работают, как они связаны с коллекциями, читал тот же Хабр с места не двинулся :/, я новичок:/, именно в Java, а то мой пост определяют как дубликат, хотя другой похожий вопрос вообще по Андроид разработке, помогите пожалуйста, ну очень прошу
Метод equals
используется для сравнивания объектов.
Если сравнивать через ==
то будет выяснено, лежат ли данные, хранящиеся в сравниваемых переменных в одной и той же области памяти. Иногда это не то, что нужно. Например у вас есть 2 объекта одного класса User
- один вы из БД достали, другой с сети пришёл. Они точно не будут лежать в одной области памяти, т.к. были созданы в разных местах через конструктор. Но вам может быть надо сделать так, чтобы программа определяла их как одинаковые, сравнивая не физическое их положение на диске, но значение их ID
, кое хранится в их поле.
Именно для этого и нужен метод equals
- в нём вы указываете, что переменные равны друг другу не только, если на одну и ту же область в памяти ссылаются, но и если их ID
равны.
В случае коллекций этот метод нужен для, например, выяснения содержит ли коллекция к-л объект. Если не переопределить метод equals
, то будут сравниваться ссылки на область в памяти, а не ID
и вы получите false
в неожиданных случаях. (В исходниках просто цикл обхода всей коллекции с вызовом метода equals
происходит)
Метод же hashCode
нужен для некоторых коллекций (HashMap, HashSet etc), которые, вызывая его, определяют в какой из внутренних массивов положить объект. Если его не переопределять наравне с equals
вы можете столкнуться с неожиданным поведением таких коллекций. При этом нельзя также и одним только hashCode
ограничиться - т.к. он типа int
то максимальное кол-во уникальных значений меньше 5 млрд, что не всегда достаточно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли в легенде, разделить все содержимое <div> со своими классами? Сейчас сгенерированна своя легенда и пункт ее выглядит примерно так:
При получении значения из inpit, нужно чтоб появлялся еще один блок, если это значение равно 2 то появляется второй блок, если 3-ом то третий...
Допустим мы выбираем элемент var $el = $('hi');