/* * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at * http://creativecommons.org/licenses/publicdomain */ package java.util.concurrent; import java.util.*; /** * A {@link ConcurrentMap} supporting {@link NavigableMap} operations, * and recursively so for its navigable sub-maps. * *

This interface is a member of the * * Java Collections Framework. * * @author Doug Lea * @param the type of keys maintained by this map * @param the type of mapped values * @since 1.6 */ public interface ConcurrentNavigableMap extends ConcurrentMap, NavigableMap { /** * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive); /** * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap headMap(K toKey, boolean inclusive); /** * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap tailMap(K fromKey, boolean inclusive); /** * Returns a view of the portion of this map whose keys range from * {@code fromKey}, inclusive, to {@code toKey}, exclusive. (If * {@code fromKey} and {@code toKey} are equal, the returned map * is empty.) The returned map is backed by this map, so changes * in the returned map are reflected in this map, and vice-versa. * The returned map supports all optional map operations that this * map supports. * *

The returned map will throw an {@code IllegalArgumentException} * on an attempt to insert a key outside its range. * *

Equivalent to {@code subMap(fromKey, true, toKey, false)}. * * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap subMap(K fromKey, K toKey); /** * Returns a view of the portion of this map whose keys are * strictly less than {@code toKey}. The returned map is backed * by this map, so changes in the returned map are reflected in * this map, and vice-versa. The returned map supports all * optional map operations that this map supports. * *

The returned map will throw an {@code IllegalArgumentException} * on an attempt to insert a key outside its range. * *

Equivalent to {@code headMap(toKey, false)}. * * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap headMap(K toKey); /** * Returns a view of the portion of this map whose keys are * greater than or equal to {@code fromKey}. The returned map is * backed by this map, so changes in the returned map are * reflected in this map, and vice-versa. The returned map * supports all optional map operations that this map supports. * *

The returned map will throw an {@code IllegalArgumentException} * on an attempt to insert a key outside its range. * *

Equivalent to {@code tailMap(fromKey, true)}. * * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} */ ConcurrentNavigableMap tailMap(K fromKey); ConcurrentNavigableMap descendingMap(); }