Класс 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>
-
Set<
- Доступные расширения
Конструкторы
- 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