Spec-Zone.ru › Dart 2

dart:collection

Класс HashSet<E>

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

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

Большинство простых операций над 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
read-onlyinherited
Возвращает первый элемент.
hashCode → int
read-onlyinherited
Хеш-код этого объекта.
isEmpty → bool
read-onlyinherited
Содержит ли эта коллекция элементы.
isNotEmpty → bool
read-onlyinherited
Содержит ли эта коллекция хотя бы один элемент.
iterator → Iterator<E>
read-onlyoverride
Предоставляет итератор для перебора элементов этого множества.
last → E
read-onlyinherited
Возвращает последний элемент.
length → int
read-onlyinherited
Возвращает количество элементов в итерируемой последовательности.
runtimeType → Type
read-onlyinherited
Представление типа объекта во время выполнения.
single → E
read-onlyinherited
Проверяет, что эта итерируемая последовательность содержит только один элемент, и возвращает этот элемент.

Методы

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.19.6/dart-collection/HashSet-class.html

Spec-Zone.ru

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