Spec-Zone.ru › Dart 2

dart:collection

Класс LinkedHashSet<E>

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

По умолчанию реализация Set — это LinkedHashSet.

Эта реализация также отслеживает порядок вставки элементов, и итерация происходит в порядке добавления (с начала во вставке к концу).

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

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

Большинство простых операций над LinkedHashSet выполняются за постоянное (потенциально амортизированное) время: 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}

Для удаления всех элементов и очистки набора используйте clear.

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)?})
factory
Создаёт набор с упорядочиванием по вставкам, используя предоставленные equals и hashCode.
LinkedHashSet.from(Iterable elements)
factory
Создаёт набор LinkedHashSet, содержащий все elements.
LinkedHashSet.identity()
factory
Создаёт набор с упорядочиванием по вставкам, основанный на идентичности.
LinkedHashSet.of(Iterable<E> elements)
factory
Создаёт набор LinkedHashSet из 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
override
Выполняет функцию для каждого элемента множества.
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/LinkedHashSet-class.html

Spec-Zone.ru

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