Разбираемся в мобильной разработке (Android/iOS) и пытаемся выяснить, зачем оно так устроено
Статистика/цены: @dolgo_polo_dev_stats
По вопросам/рекламе: @dolgopolovdenis
Post #29
1.37K
Hash\хэш-код\хэш-функция\хэширование
Если вы понимаете, что такое хэш, то гарантированно знаете, как работают: хэш-функции, хэш-таблицы, хэш-мапы, сравнения
Хэш — число, которое однозначно идентифицирует объект, опираясь на заранее придуманные правила сравнения (вольная интерпретация автора, в википедии другие слова)
• хэшем может быть id, если мы заранее договоримся о том, что два объекта точно равны, если равны их id
• хэшем может быть поле name (или любое другое поле), приведенное к числу, если договоримся, что два объекта точно равны, если равны их поля name
• хэшем может быть timestamp создания объекта, сумма всех его полей... почти всё что угодно)
Главное — решить, что в вашей бизнес-логике "равно". Чаще всего "равно" = "у обоих объектов все поля равны" или "равно" = "у обоих объектов равны поля id"
...
В Java у всех классов есть функция hashCode (определена в родительском классе Object). Что для нее "равно"? (для каких объектов вернет одинаковых хэш)
Чем отличается hashCode в Kotlin у классов, помеченных как data class
Проблема коллизий хэш-функции — о чем она и чем опасна?
Если вы понимаете, что такое хэш, то гарантированно знаете, как работают: хэш-функции, хэш-таблицы, хэш-мапы, сравнения
Хэш — число, которое однозначно идентифицирует объект, опираясь на заранее придуманные правила сравнения (вольная интерпретация автора, в википедии другие слова)
• хэшем может быть id, если мы заранее договоримся о том, что два объекта точно равны, если равны их id
• хэшем может быть поле name (или любое другое поле), приведенное к числу, если договоримся, что два объекта точно равны, если равны их поля name
• хэшем может быть timestamp создания объекта, сумма всех его полей... почти всё что угодно)
Главное — решить, что в вашей бизнес-логике "равно". Чаще всего "равно" = "у обоих объектов все поля равны" или "равно" = "у обоих объектов равны поля id"
...
В Java у всех классов есть функция hashCode (определена в родительском классе Object). Что для нее "равно"? (для каких объектов вернет одинаковых хэш)
Чем отличается hashCode в Kotlin у классов, помеченных как data class
Проблема коллизий хэш-функции — о чем она и чем опасна?


