Spec-Zone.ru › Dart 2

dart:math

Свойство hashCode

int hashCode
override

Хэш-код этого объекта.

Хэш-код — это целое число, которое представляет состояние объекта, влияющее на сравнения с помощью operator ==.

У всех объектов есть хэш-коды. По умолчанию хэш-код, реализованный в Object, представляет только идентификатор объекта, точно так же, как по умолчанию operator == считает объекты равными только в случае их идентичности (см. identityHashCode).

Если operator == переопределён для использования состояния объекта, хэш-код также должен быть изменён, чтобы представлять это состояние; в противном случае объект не может использоваться в структурах данных на основе хэшей, таких как реализации по умолчанию Set и Map.

Хэш-коды должны быть одинаковыми для объектов, которые равны друг другу по operator ==. Хэш-код объекта должен изменяться только при изменении объекта таким образом, что это влияет на равенство. Больше требований к хэш-кодам нет. Они не должны быть согласованными между выполнениями одной и той же программы, и нет гарантий распределения.

Объекты, которые не равны, могут иметь одинаковый хэш-код. Даже технически допускается, что у всех экземпляров одинаковый хэш-код, но если коллизии происходят слишком часто, это может снизить эффективность структур данных на основе хэшей, таких как HashSet или HashMap.

Если подкласс переопределяет hashCode, он также должен переопределить оператор operator ==, чтобы поддерживать согласованность.

Реализация

int get hashCode => SystemHash.hash2(x.hashCode, y.hashCode);

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-math/Point/hashCode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API