Spec-Zone.ru › Dart 2

dart:collection

Класс LinkedHashSet<E>

LinkedHashSet — это реализация Set на основе хеш-таблицы.

Реализацией Set по умолчанию является LinkedHashSet.

LinkedHashSet также отслеживает порядок добавления элементов, а итерация выполняется в порядке их добавления — от первого к последнему.

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

Элементы перебираются в порядке добавления. Элемент, добавленный позже другого, будет встречен позже при итерации. Добавление уже имеющегося в множестве элемента не меняет его положение в порядке итерации, но удаление элемента и его повторное добавление переместит его в конец.

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

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

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

Пример:

final planets = <String>{}; // LinkedHashSet

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

final uranusAdded = planets.add('Uranus'); // true
planets.addAll({'Venus', 'Mars', 'Earth', 'Jupiter'});
print(planets); // {Uranus, Venus, Mars, Earth, Jupiter}

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

print(planets.isEmpty); // false
print(planets.length); // 5

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

final marsExists = planets.contains('Mars'); // true

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

planets.forEach(print);
// Uranus
// Venus
// Mars
// Earth
// Jupiter

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

final copySet = planets.toSet();
print(copySet); // {Uranus, Venus, Mars, Earth, Jupiter}

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

final removedValue = planets.remove('Mars'); // Mars
print(planets); // {Uranus, Venus, Earth, Jupiter}

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

planets.removeWhere((element) => element.startsWith('E'));
print(planets); // {Uranus, Venus, Jupiter}

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

planets.retainWhere((element) => element.contains('Jupiter'));
print(planets); // {Jupiter}
```dart continued
To remove all elements and empty the set, use [clear].
```dart continued
planets.clear();
print(planets.isEmpty); // true
print(planets); // {}

См. также:

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

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

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

Свойства

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

Методы

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

Операторы

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

© 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/LinkedHashSet-class.html

Spec-Zone.ru

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