Spec-Zone.ru › Dart 2

dart:collection

Класс SplayTreeMap<K, V>

A Map of objects that can be ordered relative to each other.

The map is based on a self-balancing binary tree. It allows most single-entry operations in amortized logarithmic time.

Keys of the map are compared using the compare function passed in the constructor, both for ordering and for equality. If the map contains only the key a, then map.containsKey(b) will return true if and only if compare(a, b) == 0, and the value of a == b is not even checked. If the compare function is omitted, the objects are assumed to be Comparable, and are compared using their Comparable.compareTo method. Non-comparable objects (including null) will not work as keys in that case.

To allow calling operator [], remove or containsKey with objects that are not supported by the compare function, an extra isValidKey predicate function can be supplied. This function is tested before using the compare function on an argument value that may not be a K value. If omitted, the isValidKey function defaults to testing if the value is a K.

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

Пример:

final planetsByMass = SplayTreeMap<double, String>((a, b) => a.compareTo(b));

Для добавления данных в карту используйте operator[]=, addAll или addEntries.

planetsByMass[0.06] = 'Mercury';
planetsByMass
    .addAll({0.81: 'Venus', 1.0: 'Earth', 0.11: 'Mars', 317.83: 'Jupiter'});

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

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

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

planetsByMass.forEach((key, value) {
  print('$key \t $value');
  // 0.06    Mercury
  // 0.11    Mars
  // 0.81    Venus
  // 1.0     Earth
  // 317.83  Jupiter
});

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

final keyOneExists = planetsByMass.containsKey(1.0); // true
final keyFiveExists = planetsByMass.containsKey(5); // false

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

final earthExists = planetsByMass.containsValue('Earth'); // true
final plutoExists = planetsByMass.containsValue('Pluto'); // false

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

final removedValue = planetsByMass.remove(1.0);
print(removedValue); // Earth

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

planetsByMass.removeWhere((key, value) => key <= 1);
print(planetsByMass); // {317.83: Jupiter}

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

planetsByMass.update(1, (v) => '', ifAbsent: () => 'Earth');
planetsByMass.putIfAbsent(317.83, () => 'Another Jupiter');
print(planetsByMass); // {1.0: Earth, 317.83: Jupiter}

Чтобы обновить значения всех ключей, основываясь на существующем ключе и значении, используйте updateAll.

planetsByMass.updateAll((key, value) => 'X');
print(planetsByMass); // {1.0: X, 317.83: X}

Чтобы удалить все записи и очистить карту, используйте clear.

planetsByMass.clear();
print(planetsByMass.isEmpty); // false
print(planetsByMass); // {}

См. также:

  • Map, общий интерфейс коллекций пар ключ/значение.
  • HashMap — неупорядочена (порядок итерации не гарантируется).
  • LinkedHashMap итерируется в порядке добавления ключей.
Смешанные типы
  • MapMixin<K, V>

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

SplayTreeMap([int compare(K key1, K key2)?, bool isValidKey(dynamic potentialKey)?])
SplayTreeMap.from(Map other, [int compare(K key1, K key2)?, bool isValidKey(dynamic potentialKey)?])
factory
Создаёт SplayTreeMap, содержащую все пары ключ/значение из other.
SplayTreeMap.fromIterable(Iterable iterable, {K key(dynamic element)?, V value(dynamic element)?, int compare(K key1, K key2)?, bool isValidKey(dynamic potentialKey)?})
factory
Создаёт SplayTreeMap, где ключи и значения вычисляются из iterable.
SplayTreeMap.fromIterables(Iterable<K> keys, Iterable<V> values, [int compare(K key1, K key2)?, bool isValidKey(dynamic potentialKey)?])
factory
Создаёт SplayTreeMap, ассоциируя заданные keys с values.
SplayTreeMap.of(Map<K, V> other, [int compare(K key1, K key2)?, bool isValidKey(dynamic potentialKey)?])
factory
Создаёт SplayTreeMap, содержащую все пары ключ/значение из other. Пример:

Свойства

entries → Iterable<MapEntry<K, V>>
только для чтения, переопределено
Элементы карты this.
hashCode → int
только для чтения, унаследовано
Код хэша этого объекта.
isEmpty → bool
только для чтения, переопределено
Пуста ли карта.
isNotEmpty → bool
только для чтения, переопределено
Содержит ли карта хотя бы один элемент.
keys → Iterable<K>
только для чтения, переопределено
Ключи this.
length → int
только для чтения, переопределено
Количество пар ключ/значение в карте.
runtimeType → Type
только для чтения, унаследовано
Представление типа объекта во время выполнения.
values → Iterable<V>
только для чтения, переопределено
Значения this.

Методы

addAll(Map<K, V> other) → void
override
Добавляет все пары ключ/значение из other в эту карту.
addEntries(Iterable<MapEntry<K, V>> newEntries) → void
inherited
Добавляет все пары ключ/значение из newEntries в эту карту.
cast<RK, RV>() → Map<RK, RV>
inherited
Предоставляет представление этой карты как имеющей RK ключи и RV экземпляры, если необходимо.
clear() → void
override
Удаляет все записи из карты.
containsKey(Object? key) → bool
override
Является ли эта карта содержит данный key.
containsValue(Object? value) → bool
override
Содержит ли эта карта заданное value.
firstKey() → K?
Первый ключ в карте.
firstKeyAfter(K key) → K?
Получить первый ключ в карте, строго больший, чем key. Возвращает null, если ключ не найден.
forEach(void f(K key, V value)) → void
override
Применяет action к каждой паре ключ/значение в карте.
lastKey() → K?
Последний ключ в карте.
lastKeyBefore(K key) → K?
Последний ключ в карте, строго меньший, чем key.
map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) → Map<K2, V2>
inherited
Возвращает новую карту, где все записи этой карты преобразуются заданной convert функцией.
noSuchMethod(Invocation invocation) → dynamic
inherited
Вызывается при доступе к несуществующему методу или свойству.
putIfAbsent(K key, V ifAbsent()) → V
override
Ищет значение для key, или добавляет новую запись, если ее нет.
remove(Object? key) → V?
override
Удаляет key и его связанное значение, если они присутствуют, из карты.
removeWhere(bool test(K key, V value)) → void
inherited
Удаляет все записи этой карты, удовлетворяющие заданному test.
toString() → String
inherited
Строковое представление этого объекта.
update(K key, V update(V value), {V ifAbsent()?}) → V
override
Обновляет значение для предоставленного key.
updateAll(V update(K key, V value)) → void
override
Обновляет все значения.

Операторы

operator ==(Object other) → bool
inherited
Оператор равенства.
operator [](Object? key) → V?
override
Значение для данного key, или null, если key не в карте.
operator []=(K key, V value) → void
override
Связывает key с заданным value.

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

Spec-Zone.ru

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