Класс SplayTreeSet< E>
Set объектов, которые можно упорядочить относительно друг друга.
Множество основано на самобалансирующемся двоичном дереве. Большинство операций выполняется за амортизированное логарифмическое время.
Элементы множества сравниваются с помощью функции compare, переданной конструктору, как для упорядочивания, так и для проверки равенства. Если множество содержит только объект a, то set.contains(b) вернёт true тогда и только тогда, когда compare(a, b) == 0, а значение a == b даже не проверяется. Если функция сравнения не указана, предполагается, что объекты реализуют интерфейс Comparable, и они сравниваются с помощью метода Comparable.compareTo. Несравнимые объекты (включая null) в этом случае нельзя использовать в качестве элементов.
Примечание: Не изменяйте множество (не добавляйте и не удаляйте элементы), пока над ним выполняется операция, например, в функциях, вызываемых во время вызова forEach или containsAll, а также во время перебора множества.
Не изменяйте элементы так, чтобы менялось их равенство (и, следовательно, хеш-код), пока они находятся в множестве. Некоторые специализированные виды множеств могут допускать более свободное отношение к равенству; в этом случае в документации к ним должно быть описано их отличающееся поведение и ограничения.
Пример:
final planets = SplayTreeSet<String>((a, b) => a.compareTo(b));
Чтобы добавить данные в множество, используйте add или addAll.
planets.add('Neptune');
planets.addAll({'Venus', 'Mars', 'Earth', 'Jupiter'});
print(planets); // {Earth, Jupiter, Mars, Neptune, Venus} Чтобы проверить, пусто ли множество, используйте isEmpty или isNotEmpty. Чтобы узнать количество элементов в множестве, используйте length.
final isEmpty = planets.isEmpty; // false final length = planets.length; // 5
Чтобы проверить, содержит ли множество определённый элемент, используйте contains.
final marsExists = planets.contains('Mars'); // true Чтобы получить значение элемента по индексу, используйте elementAt.
final elementAt = planets.elementAt(1); print(elementAt); // Jupiter
Чтобы создать копию множества, используйте toSet.
final copySet = planets.toSet(); // a `SplayTreeSet` with the same ordering.
print(copySet); // {Earth, Jupiter, Mars, Neptune, Venus} Чтобы удалить элемент, используйте remove.
final removedValue = planets.remove('Mars'); // true
print(planets); // {Earth, Jupiter, Neptune, Venus} Чтобы одновременно удалить несколько элементов, используйте removeWhere.
planets.removeWhere((element) => element.startsWith('J'));
print(planets); // {Earth, Neptune, Venus} Чтобы удалить из этого множества все элементы, не удовлетворяющие условию, используйте retainWhere.
planets.retainWhere((element) => element.contains('Earth'));
print(planets); // {Earth} Чтобы удалить все элементы и очистить множество, используйте clear.
planets.clear();
print(planets.isEmpty); // true
print(planets); // {} См. также:
- Set — базовый класс для коллекции объектов.
- HashSet — порядок объектов при переборе не гарантируется.
- LinkedHashSet — объекты хранятся в порядке добавления.
- Подмешиваемые типы
-
-
IterableMixin<
E> -
SetMixin<
E>
-
IterableMixin<
- Доступные расширения
Конструкторы
- SplayTreeSet([int compare(E key1, E key2)?, bool isValidKey(dynamic potentialKey)?])
- Создаёт новый SplayTreeSet с заданной функцией сравнения.
- SplayTreeSet.from(Iterable elements, [int compare(E key1, E key2)?, bool isValidKey(dynamic potentialKey)?]) factory
- Создаёт SplayTreeSet, содержащий все
elements. - SplayTreeSet.of(Iterable<
E> elements, [int compare(E key1, E key2)?, bool isValidKey(dynamic potentialKey)?]) factory - Создаёт SplayTreeSet из
elements.
Свойства
- first → E read-onlyoverride
- Возвращает первый элемент.
- hashCode → int read-onlyinherited
- Хеш-код этого объекта.
- isEmpty → bool read-onlyoverride
- Содержит ли эта коллекция ноль элементов.
- isNotEmpty → bool read-onlyoverride
- Содержит ли эта коллекция хотя бы один элемент.
- iterator → Iterator<
E> read-onlyoverride - Возвращает новый
Iterator, позволяющий перебирать элементы этогоIterable. - last → E read-onlyoverride
- Возвращает последний элемент.
- length → int read-onlyoverride
- Возвращает количество элементов в этом множестве.
- runtimeType → Type read-onlyinherited
- Представление типа объекта во время выполнения.
- single → E read-onlyoverride
- Проверяет, что эта последовательность содержит только один элемент, и возвращает его.
Методы
- add(
E element) → bool override - Добавляет
valueв множество. - addAll(
Iterable< E> elements) → void override - Добавляет все
elementsв это множество. - any(
bool test(E element)) → bool inherited - Проверяет, удовлетворяет ли какой-либо элемент этой последовательности условию
test. - cast<
R>( ) → Set< R> override - Предоставляет представление этой последовательности как последовательности экземпляров
R. - clear(
) → void override - Удаляет из множества все элементы.
- contains(
Object? element) → bool override - Содержит ли коллекция элемент, равный
element. - containsAll(
Iterable< Object?> other) → bool inherited - Содержит ли это множество все элементы
other. - difference(
Set< Object?> other) → Set< E> override - Создаёт новое множество с элементами этого множества, отсутствующими в
other. - elementAt(
int index) → E inherited - Возвращает элемент с индексом
index. - every(
bool f(E element)) → bool inherited - Проверяет, удовлетворяет ли каждый элемент этой последовательности условию
test. - expand<
T>( Iterable< T> f(E element)) → Iterable< T> inherited - Преобразует каждый элемент этой Iterable в ноль или более элементов.
- firstWhere(
bool test(E value), {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 f(E element)) → void inherited - Вызывает
actionдля каждого элемента этой последовательности в порядке перебора. - intersection(
Set< Object?> other) → Set< E> override - Создаёт новое множество, являющееся пересечением этого множества и
other. - join(
[String separator = ""]) → String inherited - Преобразует каждый элемент в String и объединяет полученные строки.
- lastWhere(
bool test(E value), {E orElse()?}) → E inherited - Возвращает последний элемент, удовлетворяющий заданному предикату
test. - lookup(
Object? object) → E? override - Если в множестве есть объект, равный
object, возвращает его. - map<
T>( T f(E element)) → Iterable< T> inherited - Текущие элементы этой последовательности, преобразованные с помощью
toElement. - noSuchMethod(
Invocation invocation) → dynamic inherited - Вызывается при обращении к несуществующему методу или свойству.
- reduce(
E combine(E value, E element)) → E inherited - Сводит коллекцию к одному значению, последовательно объединяя элементы коллекции с помощью заданной функции.
- remove(
Object? object) → bool override - Удаляет
valueиз множества. - removeAll(
Iterable< Object?> elements) → void override - Удаляет из этого множества каждый элемент из
elements. - removeWhere(
bool test(E element)) → void inherited - Удаляет из этого множества все элементы, удовлетворяющие условию
test. - retainAll(
Iterable< Object?> elements) → void override - Удаляет из этого множества все элементы, которых нет в
elements. - retainWhere(
bool test(E element)) → void inherited - Удаляет из этого множества все элементы, не удовлетворяющие условию
test. - singleWhere(
bool test(E value), {E orElse()?}) → E inherited - Возвращает единственный элемент, удовлетворяющий условию
test. - skip(
int n) → Iterable< E> inherited - Возвращает Iterable, содержащую все элементы, кроме первых
count. - skipWhile(
bool test(E value)) → Iterable< E> inherited - Возвращает
Iterable, пропускающую начальные элементы, пока выполняется условиеtest. - take(
int n) → 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> override - Создаёт Set, содержащий те же элементы, что и эта последовательность.
- toString(
) → String override - Строковое представление этого объекта.
- union(
Set< E> other) → Set< E> override - Создаёт новое множество, содержащее все элементы этого множества и
other. - where(
bool f(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/SplayTreeSet-class.html