Класс SplayTreeSet< E>
Множество объектов, которые могут быть упорядочены относительно друг друга.
Множество основано на самобалансирующемся двоичном дереве. Оно позволяет выполнять большинство операций за логарифмическое время в амортизированном смысле.
Элементы множества сравниваются с помощью функции 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 только для чтения, переопределено
- Возвращает первый элемент.
- hashCode → int только для чтения, унаследовано
- Хэш-код для этого объекта.
- isEmpty → bool только для чтения, переопределено
- Является ли эта коллекция пустой.
- isNotEmpty → bool только для чтения, переопределено
- Содержит ли эта коллекция хотя бы один элемент.
- iterator → Iterator<
E> только для чтения, переопределено - Возвращает новый
Iterator, который позволяет итерировать элементы этогоIterable. - last → E только для чтения, переопределено
- Возвращает последний элемент.
- length → int только для чтения, переопределено
- Возвращает количество элементов в this.
- runtimeType → Type только для чтения, унаследовано
- Представление типа объекта во время выполнения.
- single → E только для чтения, переопределено
- Проверяет, что этот итерируемый объект содержит только один элемент, и возвращает этот элемент.
Методы
- add(
E элемент) → bool override - Добавляет
valueв множество. - addAll(
Iterable< E> элементы) → void override - Добавляет все
elementsв это множество. - any(
bool проверка(E элемент)) → bool inherited - Проверяет, удовлетворяет ли какой-либо элемент этого итерируемого объекта
test. - cast<
R>( ) → Set< R> override - Предоставляет представление этого итерируемого объекта как итерируемого объекта
Rэкземпляров. - clear(
) → void override - Удаляет все элементы из множества.
- contains(
Object? элемент) → bool override - Является ли коллекция содержит элемент, равный
element. - containsAll(
Iterable< Object?> другой) → bool inherited - Содержит ли это множество все элементы
other. - difference(
Set< Object?> другой) → Set< E> override - Создаёт новое множество с элементами этого множества, которые отсутствуют в
other. - elementAt(
int индекс) → E inherited - Возвращает
index-й элемент. - every(
bool f(E элемент)) → bool inherited - Проверяет, удовлетворяет ли каждый элемент этого итерируемого объекта
test. - expand<
T>( Iterable< T> f(E элемент)) → Iterable< T> inherited - Расширяет каждый элемент этого Iterable до нуля или более элементов.
- firstWhere(
bool проверка(E значение), {E илиПоУмолчанию()?}) → E inherited - Возвращает первый элемент, удовлетворяющий заданному предикату
test. - fold<
T>( T начальноеЗначение, T комбинировать(T предыдущееЗначение, E элемент)) → T inherited - Сводит коллекцию к одному значению, итеративно комбинируя каждый элемент коллекции с существующим значением
- followedBy(
Iterable< E> другой) → Iterable< E> inherited - Возвращает ленивую конкатенацию этого итерируемого объекта и
other. - forEach(
void f(E элемент)) → void inherited - Вызывает
actionдля каждого элемента этого итерируемого объекта в порядке итерации. - intersection(
Set< Object?> другой) → Set< E> override - Создаёт новое множество, являющееся пересечением этого множества и
other. - join(
[String разделитель = ""]) → String inherited - Преобразует каждый элемент в String и конкатенирует строки.
- lastWhere(
bool проверка(E значение), {E илиПоУмолчанию()?}) → E inherited - Возвращает последний элемент, удовлетворяющий заданному предикату
test. - lookup(
Object? объект) → E? override - Если объект, равный
objectнаходится в множестве, вернуть его. - map<
T>( T f(E элемент)) → Iterable< T> inherited - Текущие элементы этого итерируемого объекта, изменённые
toElement. - noSuchMethod(
Invocation вызов) → dynamic inherited - Вызывается при обращении к несуществующему методу или свойству.
- reduce(
E комбинировать(E значение, E элемент)) → E inherited - Сводит коллекцию к одному значению, итеративно комбинируя элементы коллекции с помощью предоставленной функции.
- remove(
Object? объект) → bool override - Удаляет
valueиз множества. - removeAll(
Iterable< Object?> элементы) → void override - Удаляет каждый элемент из
elementsиз этого множества. - removeWhere(
bool проверка(E элемент)) → void inherited - Удаляет все элементы этого множества, которые удовлетворяют
test. - retainAll(
Iterable< Object?> элементы) → void override - Удаляет все элементы этого множества, которые не являются элементами
elements. - retainWhere(
bool проверка(E элемент)) → void inherited - Удаляет все элементы этого множества, которые не удовлетворяют
test. - singleWhere(
bool проверка(E значение), {E илиПоУмолчанию()?}) → E inherited - Возвращает единственный элемент, который удовлетворяет
test. - skip(
int n) → Iterable< E> inherited - Возвращает Iterable, который предоставляет все элементы, кроме первых
countэлементов. - skipWhile(
bool проверка(E значение)) → Iterable< E> inherited - Возвращает
Iterable, который пропускает ведущие элементы, покаtestвыполняется. - take(
int n) → Iterable< E> inherited - Возвращает ленивый итерируемый объект первых
countэлементов этого итерируемого объекта. - takeWhile(
bool проверка(E значение)) → Iterable< E> inherited - Возвращает ленивый итерируемый объект ведущих элементов, удовлетворяющих
test. - toList(
{bool изменяемый = true}) → List< E> inherited - Создаёт List, содержащий элементы этого Iterable.
- toSet(
) → Set< E> override - Создаёт Set, содержащий те же элементы, что и этот итерируемый объект.
- toString(
) → String override - Строковое представление этого объекта.
- union(
Set< E> другой) → Set< E> override - Создаёт новое множество, содержащее все элементы этого множества и
other. - where(
bool f(E элемент)) → 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/SplayTreeSet-class.html