Spec-Zone.ru › OpenJDK 27

Класс ConcurrentSkipListMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.concurrent.ConcurrentSkipListMap<K,V>
Параметры типа:
K - тип ключей, хранящихся в этой карте
V - тип сопоставленных значений
Все реализованные интерфейсы:
Serializable, Cloneable, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, Map<K,V>, NavigableMap<K,V>, SequencedMap<K,V>, SortedMap<K,V>
public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, Cloneable, Serializable
Масштабируемая реализация параллельной ConcurrentNavigableMap. Карта упорядочена согласно естественному порядку своих ключей либо с помощью Comparator, заданного при создании карты, в зависимости от используемого конструктора.

Этот класс реализует параллельный вариант списков с пропусками, обеспечивая ожидаемую среднюю временную сложность log(n) для операций containsKey, get, put и remove, а также их вариантов. Операции вставки, удаления, обновления и доступа безопасно выполняются несколькими потоками одновременно.

Итераторы и сплитераторы являются слабо согласованными.

Представления с ключами в порядке возрастания и соответствующие итераторы работают быстрее, чем их варианты с обратным порядком.

Все пары Map.Entry, возвращаемые методами этого класса и его представлений, отражают снимки соответствий на момент их создания. Они не поддерживают метод Entry.setValue. (Однако обратите внимание, что соответствия в связанной карте можно изменить с помощью put, putIfAbsent или replace — в зависимости от требуемого эффекта.)

Обратите внимание, что атомарное выполнение массовых операций putAll, equals, toArray, containsValue и clear не гарантируется. Например, итератор, работающий одновременно с операцией putAll, может увидеть лишь некоторые из добавленных элементов.

Этот класс, его представления и итераторы реализуют все необязательные методы интерфейсов Map и Iterator. Как и большинство других параллельных коллекций, этот класс не допускает использование ключей или значений null, поскольку некоторые возвращаемые значения null невозможно надежно отличить от отсутствия элементов.

Этот класс входит в состав Java Collections Framework.

Начиная с версии:
1.6
См. также:
  • Сериализованное представление

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе AbstractMap

AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Модификатор и тип Класс Описание
static class  AbstractMap.SimpleEntry<K,V>
Запись, содержащая ключ и значение.
static class  AbstractMap.SimpleImmutableEntry<K,V>
Неизменяемая запись, содержащая ключ и значение.

Вложенные классы/интерфейсы, объявленные в интерфейсе Map

Map.Entry<K,V>
Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,V>
Запись карты (пара ключ-значение).

Краткое описание конструкторов

Конструктор Описание
ConcurrentSkipListMap()
Создает новую пустую карту, упорядоченную согласно естественному порядку ключей.
ConcurrentSkipListMap(Comparator<? super K> comparator)
Создает новую пустую карту, упорядоченную согласно указанному компаратору.
ConcurrentSkipListMap(Map<? extends K, ? extends V> m)
Создает новую карту, содержащую те же соответствия, что и заданная карта, и упорядоченную согласно естественному порядку ключей.
ConcurrentSkipListMap(SortedMap<K, ? extends V> m)
Создает новую карту, содержащую те же соответствия и использующую тот же порядок, что и указанная отсортированная карта.

Краткое описание методов

Модификатор и тип Метод Описание
Map.Entry<K,V> ceilingEntry(K key)
Возвращает пару «ключ-значение», связанную с наименьшим ключом, который больше или равен заданному ключу, либо null, если такой записи нет.
K ceilingKey(K key)
Возвращает наименьший ключ, который больше или равен заданному ключу, либо null, если такого ключа нет.
void clear()
Удаляет из этой карты все соответствия.
ConcurrentSkipListMap<K,V> clone()
Возвращает поверхностную копию этого экземпляра ConcurrentSkipListMap.
Comparator<? super K> comparator()
Возвращает компаратор, используемый для упорядочивания ключей в этой карте, либо null, если в карте используется естественный порядок ключей.
V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить соответствие для указанного ключа и его текущего сопоставленного значения (либо null, если соответствие отсутствует).
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу еще не сопоставлено значение, пытается вычислить его с помощью заданной функции сопоставления и добавить в эту карту, если только null.
V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если значение для указанного ключа присутствует, пытается вычислить новое соответствие, используя ключ и его текущее сопоставленное значение.
boolean containsKey(Object key)
Возвращает true, если эта карта содержит соответствие для указанного ключа.
boolean containsValue(Object value)
Возвращает true, если в этой карте одному или нескольким ключам сопоставлено указанное значение.
NavigableSet<K> descendingKeySet()
Возвращает представление ключей этой карты в обратном порядке в виде NavigableSet.
ConcurrentNavigableMap<K,V> descendingMap()
Возвращает представление соответствий этой карты в обратном порядке.
Set<Map.Entry<K,V>> entrySet()
Возвращает представление содержащихся в этой карте соответствий в виде Set.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство.
Map.Entry<K,V> firstEntry()
Возвращает пару «ключ-значение», связанную с наименьшим ключом в этой карте, либо null, если карта пуста.
K firstKey()
Возвращает первый (наименьший) ключ, находящийся в этой карте в данный момент.
Map.Entry<K,V> floorEntry(K key)
Возвращает пару «ключ-значение», связанную с наибольшим ключом, который меньше или равен заданному ключу, либо null, если такого ключа нет.
K floorKey(K key)
Возвращает наибольший ключ, который меньше или равен заданному ключу, либо null, если такого ключа нет.
V get(Object key)
Возвращает значение, сопоставленное указанному ключу, либо null, если в этой карте нет соответствия для ключа.
V getOrDefault(Object key, V defaultValue)
Возвращает значение, сопоставленное указанному ключу, либо заданное значение по умолчанию, если в этой карте нет соответствия для ключа.
ConcurrentNavigableMap<K,V> headMap(K toKey)
Возвращает представление части этой карты, ключи которой строго меньше toKey.
ConcurrentNavigableMap<K,V> headMap(K toKey, boolean inclusive)
Возвращает представление части этой карты, ключи которой меньше (или равны, если inclusive равно true) toKey.
Map.Entry<K,V> higherEntry(K key)
Возвращает пару «ключ-значение», связанную с наименьшим ключом, строго большим заданного ключа, либо null, если такого ключа нет.
K higherKey(K key)
Возвращает наименьший ключ, строго больший заданного ключа, либо null, если такого ключа нет.
NavigableSet<K> keySet()
Возвращает представление ключей этой карты в виде NavigableSet.
Map.Entry<K,V> lastEntry()
Возвращает пару «ключ-значение», связанную с наибольшим ключом в этой карте, либо null, если карта пуста.
K lastKey()
Возвращает последний (наибольший) ключ, находящийся в этой карте в данный момент.
Map.Entry<K,V> lowerEntry(K key)
Возвращает пару «ключ-значение», связанную с наибольшим ключом, строго меньшим заданного ключа, либо null, если такого ключа нет.
K lowerKey(K key)
Возвращает наибольший ключ, строго меньший заданного ключа, либо null, если такого ключа нет.
V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу еще не сопоставлено значение, сопоставляет ему заданное значение.
NavigableSet<K> navigableKeySet()
Возвращает представление ключей этой карты в виде NavigableSet.
Map.Entry<K,V> pollFirstEntry()
Удаляет и возвращает пару «ключ-значение», связанную с наименьшим ключом в этой карте, либо null, если карта пуста.
Map.Entry<K,V> pollLastEntry()
Удаляет и возвращает пару «ключ-значение», связанную с наибольшим ключом в этой карте, либо null, если карта пуста.
V put(K key, V value)
Сопоставляет указанное значение указанному ключу в этой карте.
V putFirst(K k, V v)
Выбрасывает UnsupportedOperationException.
V putIfAbsent(K key, V value)
Если указанному ключу еще не сопоставлено значение, сопоставляет ему заданное значение.
V putLast(K k, V v)
Выбрасывает UnsupportedOperationException.
V remove(Object key)
Удаляет из этой карты соответствие для указанного ключа, если оно имеется.
boolean remove(Object key, Object value)
Удаляет запись для ключа только в том случае, если ему в данный момент сопоставлено заданное значение.
V replace(K key, V value)
Заменяет запись для ключа только в том случае, если ему в данный момент сопоставлено какое-либо значение.
boolean replace(K key, V oldValue, V newValue)
Заменяет запись для ключа только в том случае, если ему в данный момент сопоставлено заданное значение.
ConcurrentNavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
Возвращает представление части этой карты, ключи которой находятся в диапазоне от fromKey до toKey.
ConcurrentNavigableMap<K,V> subMap(K fromKey, K toKey)
Возвращает представление части этой карты, ключи которой находятся в диапазоне от fromKey включительно до toKey исключительно.
ConcurrentNavigableMap<K,V> tailMap(K fromKey)
Возвращает представление части этой карты, ключи которой больше или равны fromKey.
ConcurrentNavigableMap<K,V> tailMap(K fromKey, boolean inclusive)
Возвращает представление части этой карты, ключи которой больше (или равны, если inclusive равно true) fromKey.
Collection<V> values()
Возвращает представление значений этой карты в виде Collection.

Методы, объявленные в классе AbstractMap

hashCode, isEmpty, putAll, size, toString
Модификатор и тип Метод Описание
int hashCode()
Возвращает значение хеш-кода этой карты.
boolean isEmpty()
Возвращает true, если эта карта не содержит пар «ключ-значение».
void putAll(Map<? extends K, ? extends V> m)
Копирует в эту карту все соответствия из указанной карты (необязательная операция).
int size()
Возвращает количество пар «ключ-значение» в этой карте.
String toString()
Возвращает строковое представление этой карты.

Методы, объявленные в классе Object

finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени.

Методы, объявленные в интерфейсе ConcurrentMap

forEach, replaceAll
Модификатор и тип Метод Описание
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи в этой карте, пока не будут обработаны все записи или действие не выбросит исключение.
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция).

Методы, объявленные в интерфейсе NavigableMap

reversed
Модификатор и тип Метод Описание
default NavigableMap<K,V> reversed()
Возвращает представление этой карты в обратном порядке.

Методы, объявленные в интерфейсе SequencedMap

sequencedEntrySet, sequencedKeySet, sequencedValues
Модификатор и тип Метод Описание
default SequencedSet<Map.Entry<K,V>> sequencedEntrySet()
Возвращает представление SequencedSet entrySet этой карты.
default SequencedSet<K> sequencedKeySet()
Возвращает представление SequencedSet keySet этой карты.
default SequencedCollection<V> sequencedValues()
Возвращает представление SequencedCollection коллекции values этой карты.

Подробное описание конструкторов

ConcurrentSkipListMap

public ConcurrentSkipListMap()
Создает новую пустую карту, отсортированную в соответствии с естественным порядком ключей.

ConcurrentSkipListMap

public ConcurrentSkipListMap(Comparator<? super K> comparator)
Создает новую пустую карту, отсортированную в соответствии с указанным компаратором.
Параметры:
comparator — компаратор, который будет использоваться для упорядочивания этой карты. Если null, будет использоваться естественный порядок ключей.

ConcurrentSkipListMap

public ConcurrentSkipListMap(Map<? extends K, ? extends V> m)
Создает новую карту, содержащую те же соответствия, что и указанная карта, и отсортированную в соответствии с естественным порядком ключей.
Параметры:
m — карта, соответствия которой будут помещены в эту карту
Исключения:
ClassCastException — если ключи в m не являются Comparable или несравнимы друг с другом
NullPointerException — если указанная карта или любой из ее ключей либо значений равен null

ConcurrentSkipListMap

public ConcurrentSkipListMap(SortedMap<K, ? extends V> m)
Создает новую карту, содержащую те же соответствия и использующую тот же порядок, что и указанная отсортированная карта.
Параметры:
m — отсортированная карта, соответствия которой будут помещены в эту карту, а компаратор будет использоваться для сортировки этой карты
Исключения:
NullPointerException — если указанная отсортированная карта или любой из ее ключей либо значений равен null

Подробное описание методов

clone

public ConcurrentSkipListMap<K,V> clone()
Возвращает поверхностную копию этого экземпляра ConcurrentSkipListMap. (Сами ключи и значения не клонируются.)
Переопределяет:
clone в классе AbstractMap<K,V>
Возвращает:
поверхностную копию этой карты
См. также:
  • Cloneable

containsKey

public boolean containsKey(Object key)
Возвращает true, если эта карта содержит соответствие для указанного ключа.
Определено в:
containsKey в интерфейсе Map<K,V>
Переопределяет:
containsKey в классе AbstractMap<K,V>
Параметры:
key — ключ, наличие которого в этой карте проверяется
Возвращает:
true, если эта карта содержит соответствие для указанного ключа
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ равен null

get

public V get(Object key)
Возвращает значение, которому соответствует указанный ключ, или null, если карта не содержит соответствия для этого ключа.

Более формально: если эта карта содержит соответствие ключа k значению v, такое что key согласно порядку карты равно k, этот метод возвращает v; в противном случае он возвращает null. (Такое соответствие может быть не более чем одно.)

Определено в:
get в интерфейсе Map<K,V>
Переопределяет:
get в классе AbstractMap<K,V>
Параметры:
key — ключ, значение которого требуется вернуть
Возвращает:
значение, которому соответствует указанный ключ, или null, если карта не содержит соответствия для этого ключа
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ равен null

getOrDefault

public V getOrDefault(Object key, V defaultValue)
Возвращает значение, которому соответствует указанный ключ, или заданное значение defaultValue, если карта не содержит соответствия для этого ключа.
Определено в:
getOrDefault в интерфейсе ConcurrentMap<K,V>
Определено в:
getOrDefault в интерфейсе Map<K,V>
Параметры:
key — ключ
defaultValue — значение, возвращаемое, если карта не содержит соответствия для указанного ключа
Возвращает:
соответствие для ключа, если оно существует; иначе defaultValue
Исключения:
NullPointerException — если указанный ключ равен null
Начиная с версии:
1.8

put

public V put(K key, V value)
Связывает указанное значение с указанным ключом в этой карте. Если карта ранее содержала соответствие для этого ключа, старое значение заменяется.
Определено в:
put в интерфейсе Map<K,V>
Переопределяет:
put в классе AbstractMap<K,V>
Параметры:
key — ключ, с которым связывается указанное значение
value — значение, связываемое с указанным ключом
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не было соответствия
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ или значение равны null

remove

public V remove(Object key)
Удаляет соответствие для указанного ключа из этой карты, если оно существует.
Определено в:
remove в интерфейсе Map<K,V>
Переопределяет:
remove в классе AbstractMap<K,V>
Параметры:
key — ключ, соответствие для которого следует удалить
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не было соответствия
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ равен null

containsValue

public boolean containsValue(Object value)
Возвращает true, если в этой карте одному или нескольким ключам соответствует указанное значение. Эта операция требует времени, линейно зависящего от размера карты. Кроме того, во время выполнения этого метода карта может измениться, и в этом случае возвращаемый результат может быть неточным.
Определено в:
containsValue в интерфейсе Map<K,V>
Переопределяет:
containsValue в классе AbstractMap<K,V>
Параметры:
value — значение, наличие которого в этой карте проверяется
Возвращает:
true, если существует соответствие значению value; в противном случае — false
Исключения:
NullPointerException — если указанное значение равно null

clear

public void clear()
Удаляет все соответствия из этой карты.
Определено в:
clear в интерфейсе Map<K,V>
Переопределяет:
clear в классе AbstractMap<K,V>

computeIfAbsent

public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если с указанным ключом еще не связано значение, пытается вычислить его с помощью заданной функции отображения и помещает в эту карту, если null. НЕ гарантируется, что функция будет применена только один раз атомарно, когда значение отсутствует.
Определено в:
computeIfAbsent в интерфейсе ConcurrentMap<K,V>
Определено в:
computeIfAbsent в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связывается указанное значение
mappingFunction — функция для вычисления значения
Возвращает:
текущее (существующее или вычисленное) значение, связанное с указанным ключом, или null, если вычисленное значение равно null
Исключения:
NullPointerException — если указанный ключ равен null или mappingFunction равна null
Начиная с версии:
1.8

computeIfPresent

public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если для указанного ключа существует значение, пытается вычислить новое соответствие, используя ключ и текущее связанное с ним значение. НЕ гарантируется, что функция будет применена только один раз атомарно.
Определено в:
computeIfPresent в интерфейсе ConcurrentMap<K,V>
Определено в:
computeIfPresent в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым может быть связано значение
remappingFunction — функция для вычисления значения
Возвращает:
новое значение, связанное с указанным ключом, или null, если его нет
Исключения:
NullPointerException — если указанный ключ равен null или remappingFunction равна null
Начиная с версии:
1.8

compute

public V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить соответствие для указанного ключа и текущего связанного с ним значения (или null, если соответствия в данный момент нет). НЕ гарантируется, что функция будет применена только один раз атомарно.
Определено в:
compute в интерфейсе ConcurrentMap<K,V>
Определено в:
compute в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связывается указанное значение
remappingFunction — функция для вычисления значения
Возвращает:
новое значение, связанное с указанным ключом, или null, если его нет
Исключения:
NullPointerException — если указанный ключ равен null или remappingFunction равна null
Начиная с версии:
1.8

merge

public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если с указанным ключом еще не связано значение, связывает его с заданным значением. В противном случае заменяет значение результатом заданной функции переназначения или удаляет соответствие, если null. НЕ гарантируется, что функция будет применена только один раз атомарно.
Определено в:
merge в интерфейсе ConcurrentMap<K,V>
Определено в:
merge в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связывается указанное значение
value — значение, используемое при отсутствии соответствия
remappingFunction — функция для повторного вычисления значения, если оно существует
Возвращает:
новое значение, связанное с указанным ключом, или null, если его нет
Исключения:
NullPointerException — если указанный ключ или значение равны null либо remappingFunction равна null
Начиная с версии:
1.8

keySet

public NavigableSet<K> keySet()
Возвращает представление ключей этой карты в виде NavigableSet.

Итератор множества возвращает ключи в порядке возрастания. Кроме того, spliterator множества сообщает характеристики Spliterator.CONCURRENT, Spliterator.NONNULL, Spliterator.SORTED и Spliterator.ORDERED; порядок обхода соответствует возрастанию ключей.

Компаратор spliterator равен null, если компаратор карты равен null. В противном случае компаратор spliterator совпадает с компаратором карты или задает тот же полный порядок.

Множество поддерживается картой, поэтому изменения карты отражаются в множестве, и наоборот. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.

Итераторы и spliterator этого представления обладают слабой согласованностью.

Этот метод эквивалентен методу navigableKeySet.

Определено в:
keySet в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
keySet в интерфейсе Map<K,V>
Определено в:
keySet в интерфейсе SortedMap<K,V>
Переопределяет:
keySet в классе AbstractMap<K,V>
Возвращает:
представление ключей этой карты в виде навигируемого множества

navigableKeySet

public NavigableSet<K> navigableKeySet()
Описание скопировано из интерфейса: ConcurrentNavigableMap
Возвращает представление ключей этой карты в виде NavigableSet. Итератор множества возвращает ключи в порядке возрастания. Множество поддерживается картой, поэтому изменения карты отражаются в множестве, и наоборот. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.

Итераторы и spliterator этого представления обладают слабой согласованностью.

Определено в:
navigableKeySet в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
navigableKeySet в интерфейсе NavigableMap<K,V>
Возвращает:
представление ключей этой карты в виде навигируемого множества

values

public Collection<V> values()
Возвращает представление значений этой карты в виде Collection.

Итератор коллекции возвращает значения в порядке возрастания соответствующих ключей. Кроме того, spliterator коллекции сообщает характеристики Spliterator.CONCURRENT, Spliterator.NONNULL и Spliterator.ORDERED; порядок обхода соответствует возрастанию соответствующих ключей.

Коллекция поддерживается картой, поэтому изменения карты отражаются в коллекции, и наоборот. Коллекция поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, с помощью операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.

Итераторы и spliterator этого представления обладают слабой согласованностью.

Определено в:
values в интерфейсе Map<K,V>
Определено в:
values в интерфейсе SortedMap<K,V>
Переопределяет:
values в классе AbstractMap<K,V>
Возвращает:
представление значений этой карты в виде коллекции

entrySet

public Set<Map.Entry<K,V>> entrySet()
Возвращает представление соответствий этой карты в виде Set.

Итератор множества возвращает записи в порядке возрастания ключей. Кроме того, spliterator множества сообщает характеристики Spliterator.CONCURRENT, Spliterator.NONNULL, Spliterator.SORTED и Spliterator.ORDERED; порядок обхода соответствует возрастанию ключей.

Множество поддерживается картой, поэтому изменения карты отражаются в множестве, и наоборот. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.

Итераторы и spliterator этого представления обладают слабой согласованностью.

Элементы Map.Entry, перебираемые с помощью iterator или spliterator, не поддерживают операцию setValue.

Определено в:
entrySet в интерфейсе Map<K,V>
Определено в:
entrySet в интерфейсе SortedMap<K,V>
Возвращает:
представление соответствий этой карты в виде множества, отсортированного по возрастанию ключей

descendingMap

public ConcurrentNavigableMap<K,V> descendingMap()
Описание скопировано из интерфейса: ConcurrentNavigableMap
Возвращает представление соответствий этой карты в обратном порядке. Нисходящее представление поддерживается этой картой, поэтому изменения карты отражаются в нисходящем представлении, и наоборот.

Порядок возвращаемой карты эквивалентен порядку, задаваемому Collections.reverseOrder(comparator()). Выражение m.descendingMap().descendingMap() возвращает представление m, по существу эквивалентное m.

Определено в:
descendingMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
descendingMap в интерфейсе NavigableMap<K,V>
Возвращает:
представление этой карты в обратном порядке

descendingKeySet

public NavigableSet<K> descendingKeySet()
Описание скопировано из интерфейса: ConcurrentNavigableMap
Возвращает представление ключей этой карты в обратном порядке в виде NavigableSet. Итератор множества возвращает ключи в порядке убывания. Множество поддерживается картой, поэтому изменения карты отражаются в множестве, и наоборот. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.

Итераторы и spliterator этого представления обладают слабой согласованностью.

Определено в:
descendingKeySet в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
descendingKeySet в интерфейсе NavigableMap<K,V>
Возвращает:
представление ключей этой карты в обратном порядке в виде навигируемого множества

equals

public boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство. Возвращает true, если указанный объект также является картой и обе карты содержат одинаковые соответствия. Более формально, две карты m1 и m2 содержат одинаковые соответствия, если m1.entrySet().equals(m2.entrySet()). Эта операция может вернуть неверный результат, если во время выполнения метода какая-либо из карт изменяется параллельно.
Определено в:
equals в интерфейсе Map<K,V>
Переопределяет:
equals в классе AbstractMap<K,V>
Параметры:
o — объект, проверяемый на равенство этой карте
Возвращает:
true, если указанный объект равен этой карте
См. также:
  • Object.hashCode()
  • HashMap

putIfAbsent

public V putIfAbsent(K key, V value)
Если с указанным ключом еще не связано значение, связывает его с заданным значением. Для этого map действие эквивалентно следующему:
if (!map.containsKey(key))
  return map.put(key, value);
else
  return map.get(key);
, за исключением того, что оно выполняется атомарно.
Определено в:
putIfAbsent в интерфейсе ConcurrentMap<K,V>
Определено в:
putIfAbsent в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связывается указанное значение
value — значение, связываемое с указанным ключом
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не было соответствия
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ или значение равны null

remove

public boolean remove(Object key, Object value)
Удаляет запись для ключа, только если в данный момент ему соответствует заданное значение. Для этого map действие эквивалентно следующему:
if (map.containsKey(key)
    && Objects.equals(map.get(key), value)) {
  map.remove(key);
  return true;
} else {
  return false;
}
, за исключением того, что оно выполняется атомарно.
Определено в:
remove в интерфейсе ConcurrentMap<K,V>
Определено в:
remove в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
value — значение, которое должно быть связано с указанным ключом
Возвращает:
true, если значение было удалено
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ равен null

replace

public boolean replace(K key, V oldValue, V newValue)
Заменяет запись для ключа, только если в данный момент ему соответствует заданное значение. Для этого map действие эквивалентно следующему:
if (map.containsKey(key)
    && Objects.equals(map.get(key), oldValue)) {
  map.put(key, newValue);
  return true;
} else {
  return false;
}
, за исключением того, что оно выполняется атомарно.
Определено в:
replace в интерфейсе ConcurrentMap<K,V>
Определено в:
replace в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
oldValue — значение, которое должно быть связано с указанным ключом
newValue — значение, связываемое с указанным ключом
Возвращает:
true, если значение было заменено
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если какой-либо из аргументов равен null

replace

public V replace(K key, V value)
Заменяет запись для ключа, только если в данный момент ему соответствует какое-либо значение. Для этого map действие эквивалентно следующему:
if (map.containsKey(key))
  return map.put(key, value);
else
  return null;
, за исключением того, что оно выполняется атомарно.
Определено в:
replace в интерфейсе ConcurrentMap<K,V>
Определено в:
replace в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
value — значение, связываемое с указанным ключом
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не было соответствия
Исключения:
ClassCastException — если указанный ключ нельзя сравнить с ключами, содержащимися в карте в данный момент
NullPointerException — если указанный ключ или значение равны null

comparator

public Comparator<? super K> comparator()
Описание скопировано из интерфейса: SortedMap
Возвращает компаратор, используемый для упорядочивания ключей этой карты, или null, если карта использует для своих ключей естественный порядок.
Определено в:
comparator в интерфейсе SortedMap<K,V>
Возвращает:
компаратор, используемый для упорядочивания ключей этой карты, или null, если карта использует естественный порядок ключей

firstKey

public K firstKey()
Описание скопировано из интерфейса: SortedMap
Возвращает первый (наименьший) ключ, содержащийся в этой карте в данный момент.
Определено в:
firstKey в интерфейсе SortedMap<K,V>
Возвращает:
первый (наименьший) ключ, содержащийся в этой карте в данный момент
Исключения:
NoSuchElementException — если эта карта пуста

lastKey

public K lastKey()
Описание скопировано из интерфейса: SortedMap
Возвращает последний (наибольший) ключ, присутствующий в этой карте в данный момент.
Определено в:
lastKey в интерфейсе SortedMap<K,V>
Возвращает:
последний (наибольший) ключ, присутствующий в этой карте в данный момент
Вызывает исключение:
NoSuchElementException — если эта карта пуста

putFirst

public V putFirst(K k, V v)
Вызывает UnsupportedOperationException. Порядок обхода, определяемый методом сравнения этой карты, задает позиции отображений, поэтому явное указание позиции не поддерживается.
Определено в:
putFirst в интерфейсе SequencedMap<K,V>
Определено в:
putFirst в интерфейсе SortedMap<K,V>
Параметры:
k — ключ
v — значение
Возвращает:
значение, ранее связанное с k, или null, если такого значения нет
Вызывает исключение:
UnsupportedOperationException — всегда
Начиная с:
21

putLast

public V putLast(K k, V v)
Вызывает UnsupportedOperationException. Порядок обхода, определяемый методом сравнения этой карты, задает позиции отображений, поэтому явное указание позиции не поддерживается.
Определено в:
putLast в интерфейсе SequencedMap<K,V>
Определено в:
putLast в интерфейсе SortedMap<K,V>
Параметры:
k — ключ
v — значение
Возвращает:
значение, ранее связанное с k, или null, если такого значения нет
Вызывает исключение:
UnsupportedOperationException — всегда
Начиная с:
21

subMap

public ConcurrentNavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой находятся в диапазоне от fromKey до toKey. Если fromKey и toKey равны, возвращаемая карта пуста, если только fromInclusive и toInclusive не равны true. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException; это же произойдет при создании подкарты, если одна из ее конечных точек лежит за пределами диапазона.

Определено в:
subMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
subMap в интерфейсе NavigableMap<K,V>
Параметры:
fromKey — нижняя граница ключей в возвращаемой карте
fromInclusive — true, если нижнюю границу следует включить в возвращаемое представление
toKey — верхняя граница ключей в возвращаемой карте
toInclusive — true, если верхнюю границу следует включить в возвращаемое представление
Возвращает:
представление части этой карты, ключи которой находятся в диапазоне от fromKey до toKey
Вызывает исключение:
ClassCastException — если fromKey и toKey нельзя сравнить друг с другом с помощью компаратора этой карты (или, если у карты нет компаратора, с помощью естественного порядка). Реализации могут, но не обязаны, вызывать это исключение, если fromKey или toKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если fromKey или toKey равно null
IllegalArgumentException — если fromKey больше toKey; или если диапазон самой карты ограничен и fromKey или toKey находится за его пределами

headMap

public ConcurrentNavigableMap<K,V> headMap(K toKey, boolean inclusive)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой меньше (или равны, если inclusive имеет значение true) toKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException.

Определено в:
headMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
headMap в интерфейсе NavigableMap<K,V>
Параметры:
toKey — верхняя граница ключей в возвращаемой карте
inclusive — true, если верхнюю границу следует включить в возвращаемое представление
Возвращает:
представление части этой карты, ключи которой меньше (или равны, если inclusive имеет значение true) toKey
Вызывает исключение:
ClassCastException — если toKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если toKey не реализует Comparable). Реализации могут, но не обязаны, вызывать это исключение, если toKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если toKey равно null
IllegalArgumentException — если диапазон самой карты ограничен и toKey находится за его пределами

tailMap

public ConcurrentNavigableMap<K,V> tailMap(K fromKey, boolean inclusive)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой больше (или равны, если inclusive имеет значение true) fromKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException.

Определено в:
tailMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
tailMap в интерфейсе NavigableMap<K,V>
Параметры:
fromKey — нижняя граница ключей в возвращаемой карте
inclusive — true, если нижнюю границу следует включить в возвращаемое представление
Возвращает:
представление части этой карты, ключи которой больше (или равны, если inclusive имеет значение true) fromKey
Вызывает исключение:
ClassCastException — если fromKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если fromKey не реализует Comparable). Реализации могут, но не обязаны, вызывать это исключение, если fromKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если fromKey равно null
IllegalArgumentException — если диапазон самой карты ограничен и fromKey находится за его пределами

subMap

public ConcurrentNavigableMap<K,V> subMap(K fromKey, K toKey)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой находятся в диапазоне от fromKey включительно до toKey исключительно. (Если fromKey и toKey равны, возвращаемая карта пуста.) Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException.

Эквивалентно subMap(fromKey, true, toKey, false).

Определено в:
subMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
subMap в интерфейсе NavigableMap<K,V>
Определено в:
subMap в интерфейсе SortedMap<K,V>
Параметры:
fromKey — нижняя граница ключей в возвращаемой карте (включительно)
toKey — верхняя граница ключей в возвращаемой карте (исключительно)
Возвращает:
представление части этой карты, ключи которой находятся в диапазоне от fromKey включительно до toKey исключительно
Вызывает исключение:
ClassCastException — если fromKey и toKey нельзя сравнить друг с другом с помощью компаратора этой карты (или, если у карты нет компаратора, с помощью естественного порядка). Реализации могут, но не обязаны, вызывать это исключение, если fromKey или toKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если fromKey или toKey равно null
IllegalArgumentException — если fromKey больше toKey; или если диапазон самой карты ограничен и fromKey или toKey находится за его пределами

headMap

public ConcurrentNavigableMap<K,V> headMap(K toKey)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой строго меньше toKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException.

Эквивалентно headMap(toKey, false).

Определено в:
headMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
headMap в интерфейсе NavigableMap<K,V>
Определено в:
headMap в интерфейсе SortedMap<K,V>
Параметры:
toKey — верхняя граница ключей в возвращаемой карте (исключительно)
Возвращает:
представление части этой карты, ключи которой строго меньше toKey
Вызывает исключение:
ClassCastException — если toKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если toKey не реализует Comparable). Реализации могут, но не обязаны, вызывать это исключение, если toKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если toKey равно null
IllegalArgumentException — если диапазон самой карты ограничен и toKey находится за его пределами

tailMap

public ConcurrentNavigableMap<K,V> tailMap(K fromKey)
Описание скопировано из интерфейса: NavigableMap
Возвращает представление части этой карты, ключи которой больше или равны fromKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта вызовет IllegalArgumentException.

Эквивалентно tailMap(fromKey, true).

Определено в:
tailMap в интерфейсе ConcurrentNavigableMap<K,V>
Определено в:
tailMap в интерфейсе NavigableMap<K,V>
Определено в:
tailMap в интерфейсе SortedMap<K,V>
Параметры:
fromKey — нижняя граница ключей в возвращаемой карте (включительно)
Возвращает:
представление части этой карты, ключи которой больше или равны fromKey
Вызывает исключение:
ClassCastException — если fromKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если fromKey не реализует Comparable). Реализации могут, но не обязаны, вызывать это исключение, если fromKey нельзя сравнить с ключами, уже присутствующими в карте.
NullPointerException — если fromKey равно null
IllegalArgumentException — если диапазон самой карты ограничен и fromKey находится за его пределами

lowerEntry

public Map.Entry<K,V> lowerEntry(K key)
Возвращает отображение ключ-значение, связанное с наибольшим ключом, строго меньшим заданного ключа, или null, если такого ключа нет. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
lowerEntry в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
запись с наибольшим ключом, меньшим key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

lowerKey

public K lowerKey(K key)
Описание скопировано из интерфейса: NavigableMap
Возвращает наибольший ключ, строго меньший заданного ключа, или null, если такого ключа нет.
Определено в:
lowerKey в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
наибольший ключ, меньший key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

floorEntry

public Map.Entry<K,V> floorEntry(K key)
Возвращает отображение ключ-значение, связанное с наибольшим ключом, меньшим или равным заданному ключу, или null, если такого ключа нет. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
floorEntry в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
запись с наибольшим ключом, меньшим или равным key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

floorKey

public K floorKey(K key)
Описание скопировано из интерфейса: NavigableMap
Возвращает наибольший ключ, меньший или равный заданному ключу, или null, если такого ключа нет.
Определено в:
floorKey в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
наибольший ключ, меньший или равный key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

ceilingEntry

public Map.Entry<K,V> ceilingEntry(K key)
Возвращает отображение ключ-значение, связанное с наименьшим ключом, большим или равным заданному ключу, или null, если такой записи нет. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
ceilingEntry в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
запись с наименьшим ключом, большим или равным key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

ceilingKey

public K ceilingKey(K key)
Описание скопировано из интерфейса: NavigableMap
Возвращает наименьший ключ, больший или равный заданному ключу, или null, если такого ключа нет.
Определено в:
ceilingKey в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
наименьший ключ, больший или равный key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

higherEntry

public Map.Entry<K,V> higherEntry(K key)
Возвращает отображение ключ-значение, связанное с наименьшим ключом, строго большим заданного ключа, или null, если такого ключа нет. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
higherEntry в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
запись с наименьшим ключом, большим key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

higherKey

public K higherKey(K key)
Описание скопировано из интерфейса: NavigableMap
Возвращает наименьший ключ, строго больший заданного ключа, или null, если такого ключа нет.
Определено в:
higherKey в интерфейсе NavigableMap<K,V>
Параметры:
key — ключ
Возвращает:
наименьший ключ, больший key, или null, если такого ключа нет
Вызывает исключение:
ClassCastException — если указанный ключ нельзя сравнить с ключами, уже присутствующими в карте
NullPointerException — если указанный ключ равен null

firstEntry

public Map.Entry<K,V> firstEntry()
Возвращает отображение ключ-значение, связанное с наименьшим ключом в этой карте, или null, если карта пуста. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
firstEntry в интерфейсе NavigableMap<K,V>
Определено в:
firstEntry в интерфейсе SequencedMap<K,V>
Возвращает:
запись с наименьшим ключом или null, если эта карта пуста

lastEntry

public Map.Entry<K,V> lastEntry()
Возвращает отображение ключ-значение, связанное с наибольшим ключом в этой карте, или null, если карта пуста. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
lastEntry в интерфейсе NavigableMap<K,V>
Определено в:
lastEntry в интерфейсе SequencedMap<K,V>
Возвращает:
запись с наибольшим ключом или null, если эта карта пуста

pollFirstEntry

public Map.Entry<K,V> pollFirstEntry()
Удаляет и возвращает отображение ключ-значение, связанное с наименьшим ключом в этой карте, или null, если карта пуста. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
pollFirstEntry в интерфейсе NavigableMap<K,V>
Определено в:
pollFirstEntry в интерфейсе SequencedMap<K,V>
Возвращает:
удаленную первую запись этой карты или null, если эта карта пуста

pollLastEntry

public Map.Entry<K,V> pollLastEntry()
Удаляет и возвращает отображение ключ-значение, связанное с наибольшим ключом в этой карте, или null, если карта пуста. Возвращаемая запись не поддерживает метод Entry.setValue.
Определено в:
pollLastEntry в интерфейсе NavigableMap<K,V>
Определено в:
pollLastEntry в интерфейсе SequencedMap<K,V>
Возвращает:
удаленную последнюю запись этой карты или null, если эта карта пуста

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания, ориентированные на разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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