свойство hashCode
Хэш-код этого объекта.
Хэш-код — это целое число, представляющее состояние объекта, влияющее на сравнения с помощью 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.19.6/dart-math/Point/hashCode.html