Spec-Zone.ru › Dart 2

dart:collection

Класс HashSet<E>

Реализация набора (Set) на основе неупорядоченной хеш-таблицы.

Элементы набора HashSet должны иметь согласованные реализации методов equality и hashCode. Это означает, что операция equals должна определять стабильное отношение эквивалентности на элементах (рефлексивное, симметричное, транзитивное и согласованное со временем), а hashCode должен быть согласован с равенством, так чтобы он был одинаковым для объектов, считающихся равными.

Большинство простых операций над набором HashSet выполняются за (потенциально амортизированное) постоянное время: add, contains, remove и length, при условии, что хеш-коды объектов распределены равномерно.

Порядок итерации по набору не определён и зависит от хеш-кодов предоставленных элементов. Однако, порядок стабилен: многократные итерации по одному и тому же набору производят один и тот же порядок, пока набор не будет изменён.

Примечание: Не изменяйте набор (добавление или удаление элементов) во время выполнения операции над набором, например, в функциях, вызываемых во время forEach или containsAll вызова, или во время итерации по набору.

Не изменяйте элементы таким образом, чтобы это меняло их равенство (и, следовательно, их хеш-код), пока они находятся в наборе. Некоторые специализированные типы наборов могут быть более допускающими с точки зрения равенства, в этом случае они должны документировать своё разное поведение и ограничения.

Пример:

final letters = HashSet<String>();

Чтобы добавить данные в набор, используйте add или addAll.

letters.add('A');
letters.addAll({'B', 'C', 'D'});

Чтобы проверить, пуст ли набор, используйте isEmpty или isNotEmpty. Чтобы найти количество элементов в наборе, используйте length.

print(letters.isEmpty); // false
print(letters.length); // 4
print(letters); // fx {A, D, C, B}

Чтобы проверить, содержит ли набор элемент с определённым значением, используйте contains.

final bExists = letters.contains('B'); // true

Метод forEach вызывает функцию с каждым элементом набора.

letters.forEach(print);
// A
// D
// C
// B

Чтобы создать копию набора, используйте toSet.

final anotherSet = letters.toSet();
print(anotherSet); // fx {A, C, D, B}

Чтобы удалить элемент, используйте remove.

final removedValue = letters.remove('A'); // true
print(letters); // fx {B, C, D}

Чтобы удалить несколько элементов одновременно, используйте removeWhere или removeAll.

letters.removeWhere((element) => element.startsWith('B'));
print(letters); // fx {D, C}

Чтобы удалить все элементы в этом наборе, которые не удовлетворяют условию, используйте retainWhere.

letters.retainWhere((element) => element.contains('C'));
print(letters); // {C}

Чтобы удалить все элементы и очистить набор, используйте clear.

letters.clear();
print(letters.isEmpty); // true
print(letters); // {}

См. также:

  • Set — это общий интерфейс коллекции, где каждый объект может встречаться только один раз.
  • LinkedHashSet объекты хранятся в порядке вставки.
  • SplayTreeSet итерирует объекты в отсортированном порядке.
Реализованные типы
  • Set<E>
Доступные расширения
  • EnumByName

Конструкторы

HashSet({bool equals(E, E)?, int hashCode(E)?, bool isValidKey(dynamic)?})
factory
Создаёт хеш-набор, используя предоставленные equals в качестве равенства.
HashSet.from(Iterable elements)
factory
Создаёт хеш-набор, содержащий все elements.
HashSet.identity()
factory
Создаёт неупорядоченный набор на основе идентичности.
HashSet.of(Iterable<E> elements)
factory
Создаёт хеш-набор, содержащий все elements.

Свойства

first → E
только для чтения, унаследованное
Возвращает первый элемент.
hashCode → int
только для чтения, унаследованное
Хеш-код для этого объекта.
isEmpty → bool
только для чтения, унаследованное
Является ли эта коллекция пустой.
isNotEmpty → bool
только для чтения, унаследованное
Содержит ли эта коллекция по крайней мере один элемент.
iterator → Iterator<E>
только для чтения, переопределён
Обеспечивает итератор, который перебирает элементы этого набора.
last → E
только для чтения, унаследованное
Возвращает последний элемент.
length → int
только для чтения, унаследованное
Возвращает количество элементов в итерируемом объекте.
runtimeType → Type
только для чтения, унаследованное
Представление runtime-типа объекта.
single → E
только для чтения, унаследованное
Проверяет, что у этого итерируемого объекта только один элемент, и возвращает этот элемент.

Методы

add(E value) → bool
inherited
Добавляет value в множество.
addAll(Iterable<E> elements) → void
inherited
Добавляет все elements в это множество.
any(bool test(E element)) → bool
inherited
Проверяет, удовлетворяет ли какой-либо элемент этого итерируемого объекта test.
cast<R>() → Set<R>
inherited
Предоставляет представление этого множества как множества экземпляров R.
clear() → void
inherited
Удаляет все элементы из множества.
contains(Object? value) → bool
inherited
Является ли value элементом множества.
containsAll(Iterable<Object?> other) → bool
inherited
Содержит ли это множество все элементы other.
difference(Set<Object?> other) → Set<E>
inherited
Создаёт новое множество, содержащее элементы этого множества, которые не входят в other.
elementAt(int index) → E
inherited
Возвращает элемент под номером index.
every(bool test(E element)) → bool
inherited
Проверяет, удовлетворяют ли все элементы этого итерируемого объекта test.
expand<T>(Iterable<T> toElements(E element)) → Iterable<T>
inherited
Расширяет каждый элемент этого итерируемого объекта Iterable на ноль или более элементов.
firstWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает первый элемент, удовлетворяющий заданному предикату test.
fold<T>(T initialValue, T combine(T previousValue, E element)) → T
inherited
Сводит коллекцию к одному значению, итерируя комбинирование каждого элемента коллекции с существующим значением
followedBy(Iterable<E> other) → Iterable<E>
inherited
Возвращает ленивое объединение этого итерируемого объекта и other.
forEach(void action(E element)) → void
inherited
Вызывает action для каждого элемента этого итерируемого объекта в порядке итерации.
intersection(Set<Object?> other) → Set<E>
inherited
Создаёт новое множество, являющееся пересечением этого множества и other.
join([String separator = ""]) → String
inherited
Преобразует каждый элемент в строку String и конкатенирует строки.
lastWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает последний элемент, удовлетворяющий заданному предикату test.
lookup(Object? object) → E?
inherited
Если объект, равный object, находится в множестве, вернуть его.
map<T>(T toElement(E e)) → Iterable<T>
inherited
Текущие элементы этого итерируемого объекта, изменённые посредством toElement.
noSuchMethod(Invocation invocation) → dynamic
inherited
Вызывается, когда обращается к несуществующему методу или свойству.
reduce(E combine(E value, E element)) → E
inherited
Сводит коллекцию к одному значению, итерируя комбинирование элементов коллекции с использованием предоставленной функции.
remove(Object? value) → bool
inherited
Удаляет value из множества.
removeAll(Iterable<Object?> elements) → void
inherited
Удаляет каждый элемент elements из этого множества.
removeWhere(bool test(E element)) → void
inherited
Удаляет все элементы этого множества, удовлетворяющие test.
retainAll(Iterable<Object?> elements) → void
inherited
Удаляет все элементы этого множества, которые не являются элементами elements.
retainWhere(bool test(E element)) → void
inherited
Удаляет все элементы этого множества, которые не удовлетворяют test.
singleWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает единственный элемент, удовлетворяющий test.
skip(int count) → Iterable<E>
inherited
Возвращает Iterable, предоставляющий все, кроме первых count элементов.
skipWhile(bool test(E value)) → Iterable<E>
inherited
Возвращает Iterable, пропускающий начальные элементы, пока test выполняется.
take(int count) → Iterable<E>
inherited
Возвращает ленивый итерируемый объект первых count элементов этого итерируемого объекта.
takeWhile(bool test(E value)) → Iterable<E>
inherited
Возвращает ленивый итерируемый объект начальных элементов, удовлетворяющих test.
toList({bool growable = true}) → List<E>
inherited
Создаёт List, содержащую элементы этого итерируемого объекта Iterable.
toSet() → Set<E>
inherited
Создаёт Set с теми же элементами и поведением, что и это Set.
toString() → String
inherited
Строковое представление этого объекта.
union(Set<E> other) → Set<E>
inherited
Создаёт новое множество, содержащее все элементы этого множества и other.
where(bool test(E element)) → Iterable<E>
inherited
Возвращает новый ленивый Iterable со всеми элементами, которые удовлетворяют предикату test.
whereType<T>() → Iterable<T>
inherited
Возвращает новый ленивый Iterable со всеми элементами, имеющими тип T.

Операторы

operator ==(Object other) → bool
inherited
Оператор равенства.

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

Spec-Zone.ru

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