Spec-Zone.ru › Dart 1

dart:collection

Конструктор фабрики LinkedHashSet

LinkedHashSet({bool equals(E e1, E e2), int hashCode(E e), bool isValidKey(potentialKey) })

Создать упорядоченный по вставке хеш-множество, используя предоставленные equals и hashCode.

Предоставленные equals должны определять устойчивое отношение эквивалентности, а hashCode должно быть согласовано с equals. Если методы equals или hashCode не будут работать со всеми объектами, а только с некоторыми экземплярами E, можно использовать предикат isValidKey, чтобы ограничить ключи, к которым применяются функции. Любой ключ, для которого isValidKey возвращает false, автоматически считается не принадлежащим множеству при запросе contains.

Если equals или hashCode опущены, множество использует собственные методы Object.== и Object.hashCode элементов, а isValidKey игнорируется, так как предполагается, что эти операции работают со всеми объектами.

Если вы предоставите один из equals и hashCode, вам, как правило, следует предоставить и другой.

Если предоставленные equals или hashCode функции не будут работать со всеми E объектами, а карта будет использоваться в среде, где в неё передаётся не-E объект, например, в contains, то также следует предоставить функцию isValidKey.

Если isValidKey опущено, оно по умолчанию проверяет, является ли объект экземпляром E. Это означает, что:

new LinkedHashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
                       hashCode: (int e) => e % 5)

не требует аргумента isValidKey, потому что по умолчанию принимает только int значения, которые принимаются как equals, так и hashCode.

Если ни equals, ни hashCode, ни isValidKey не предоставлены, по умолчанию isValidKey вместо этого принимает все значения. Предполагается, что стандартные операции равенства и хэш-кода работают со всеми объектами.

Аналогично, если equals является identical, hashCode является identityHashCode, а isValidKey опущено, полученное множество основано на идентичности, а isValidKey по умолчанию принимает все ключи. Такую карту можно создать напрямую, используя LinkedHashSet.identity.

Источник

external factory LinkedHashSet(
    {bool equals(E e1, E e2),
    int hashCode(E e),
    bool isValidKey(potentialKey)});

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-collection/LinkedHashSet/LinkedHashSet.html

Spec-Zone.ru

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