public abstract class ForwardingNavigableMap<K,V> extends ForwardingSortedMap<K,V> implements NavigableMap<K,V>
A navigable map which forwards all its method calls to another navigable map. Subclasses should override one or more methods to modify the behavior of the backing map as desired per the decorator pattern.
Warning: The methods of ForwardingNavigableMap
forward indiscriminately to the methods of the delegate. For example, overriding ForwardingMap.put(K, V)
alone will not change the behavior of ForwardingMap.putAll(java.util.Map<? extends K, ? extends V>)
, which can lead to unexpected behavior. In this case, you should override putAll
as well, either providing your own implementation, or delegating to the provided standardPutAll
method.
Each of the standard
methods uses the map’s comparator (or the natural ordering of the elements, if there is no comparator) to test element equality. As a result, if the comparator is not consistent with equals, some of the standard implementations may violate the Map
contract.
The standard
methods and the collection views they return are not guaranteed to be thread-safe, even when all of the methods that they depend on are thread-safe.
Modifier and Type | Class and Description |
---|---|
protected class |
ForwardingNavigableMap.StandardDescendingMap
A sensible implementation of
NavigableMap.descendingMap() in terms of the methods of this NavigableMap . |
protected class |
ForwardingNavigableMap.StandardNavigableKeySet
A sensible implementation of
NavigableMap.navigableKeySet() in terms of the methods of this NavigableMap . |
ForwardingSortedMap.StandardKeySet
ForwardingMap.StandardEntrySet, ForwardingMap.StandardValues
Modifier | Constructor and Description |
---|---|
protected |
ForwardingNavigableMap()
Constructor for use by subclasses.
|
Modifier and Type | Method and Description |
---|---|
Map.Entry<K,V> |
ceilingEntry(K key) |
K |
ceilingKey(K key) |
protected abstract NavigableMap<K,V> |
delegate()
Returns the backing delegate instance that methods are forwarded to.
|
NavigableSet<K> |
descendingKeySet() |
NavigableMap<K,V> |
descendingMap() |
Map.Entry<K,V> |
firstEntry() |
Map.Entry<K,V> |
floorEntry(K key) |
K |
floorKey(K key) |
NavigableMap<K,V> |
headMap(K toKey,
boolean inclusive) |
Map.Entry<K,V> |
higherEntry(K key) |
K |
higherKey(K key) |
Map.Entry<K,V> |
lastEntry() |
Map.Entry<K,V> |
lowerEntry(K key) |
K |
lowerKey(K key) |
NavigableSet<K> |
navigableKeySet() |
Map.Entry<K,V> |
pollFirstEntry() |
Map.Entry<K,V> |
pollLastEntry() |
protected Map.Entry<K,V> |
standardCeilingEntry(K key)
|
protected K |
standardCeilingKey(K key)
A sensible definition of
ceilingKey(K) in terms of ceilingEntry . |
protected NavigableSet<K> |
standardDescendingKeySet()
|
protected Map.Entry<K,V> |
standardFirstEntry()
|
protected K |
standardFirstKey()
A sensible definition of
ForwardingSortedMap.firstKey() in terms of firstEntry . |
protected Map.Entry<K,V> |
standardFloorEntry(K key)
|
protected K |
standardFloorKey(K key)
A sensible definition of
floorKey(K) in terms of floorEntry . |
protected SortedMap<K,V> |
standardHeadMap(K toKey)
A sensible definition of
ForwardingSortedMap.headMap(Object) in terms of headMap(Object, boolean) . |
protected Map.Entry<K,V> |
standardHigherEntry(K key)
|
protected K |
standardHigherKey(K key)
A sensible definition of
higherKey(K) in terms of higherEntry . |
protected Map.Entry<K,V> |
standardLastEntry()
A sensible definition of
lastEntry() in terms of the iterator() of the ForwardingMap.entrySet() of descendingMap() . |
protected K |
standardLastKey()
A sensible definition of
ForwardingSortedMap.lastKey() in terms of lastEntry . |
protected Map.Entry<K,V> |
standardLowerEntry(K key)
|
protected K |
standardLowerKey(K key)
A sensible definition of
lowerKey(K) in terms of lowerEntry . |
protected Map.Entry<K,V> |
standardPollFirstEntry()
|
protected Map.Entry<K,V> |
standardPollLastEntry()
A sensible definition of
pollFirstEntry() in terms of the iterator of the entrySet of descendingMap . |
protected SortedMap<K,V> |
standardSubMap(K fromKey,
K toKey)
A sensible definition of
ForwardingSortedMap.subMap(Object, Object) in terms of subMap(Object, boolean, Object, boolean) . |
protected SortedMap<K,V> |
standardTailMap(K fromKey)
A sensible definition of
ForwardingSortedMap.tailMap(Object) in terms of tailMap(Object, boolean) . |
NavigableMap<K,V> |
subMap(K fromKey,
boolean fromInclusive,
K toKey,
boolean toInclusive) |
NavigableMap<K,V> |
tailMap(K fromKey,
boolean inclusive) |
comparator, firstKey, headMap, lastKey, standardContainsKey, subMap, tailMap
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, standardClear, standardContainsValue, standardEquals, standardHashCode, standardIsEmpty, standardPutAll, standardRemove, standardToString, values
toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
headMap, subMap, tailMap
comparator, entrySet, firstKey, keySet, lastKey, values
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size
protected ForwardingNavigableMap()
Constructor for use by subclasses.
protected abstract NavigableMap<K,V> delegate()
ForwardingObject
Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such as ForwardingSet.delegate()
. Concrete subclasses override this method to supply the instance being decorated.
delegate
in class ForwardingSortedMap<K,V>
public Map.Entry<K,V> lowerEntry(K key)
lowerEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardLowerEntry(K key)
A sensible definition of lowerEntry(K)
in terms of the lastEntry()
of headMap(Object, boolean)
. If you override headMap
, you may wish to override lowerEntry
to forward to this implementation.
protected K standardLowerKey(K key)
A sensible definition of lowerKey(K)
in terms of lowerEntry
. If you override lowerEntry(K)
, you may wish to override lowerKey
to forward to this implementation.
public Map.Entry<K,V> floorEntry(K key)
floorEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardFloorEntry(K key)
A sensible definition of floorEntry(K)
in terms of the lastEntry()
of headMap(Object, boolean)
. If you override headMap
, you may wish to override floorEntry
to forward to this implementation.
protected K standardFloorKey(K key)
A sensible definition of floorKey(K)
in terms of floorEntry
. If you override floorEntry
, you may wish to override floorKey
to forward to this implementation.
public Map.Entry<K,V> ceilingEntry(K key)
ceilingEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardCeilingEntry(K key)
A sensible definition of ceilingEntry(K)
in terms of the firstEntry()
of tailMap(Object, boolean)
. If you override tailMap
, you may wish to override ceilingEntry
to forward to this implementation.
public K ceilingKey(K key)
ceilingKey
in interface NavigableMap<K,V>
protected K standardCeilingKey(K key)
A sensible definition of ceilingKey(K)
in terms of ceilingEntry
. If you override ceilingEntry
, you may wish to override ceilingKey
to forward to this implementation.
public Map.Entry<K,V> higherEntry(K key)
higherEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardHigherEntry(K key)
A sensible definition of higherEntry(K)
in terms of the firstEntry()
of tailMap(Object, boolean)
. If you override tailMap
, you may wish to override higherEntry
to forward to this implementation.
protected K standardHigherKey(K key)
A sensible definition of higherKey(K)
in terms of higherEntry
. If you override higherEntry
, you may wish to override higherKey
to forward to this implementation.
public Map.Entry<K,V> firstEntry()
firstEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardFirstEntry()
A sensible definition of firstEntry()
in terms of the iterator()
of ForwardingMap.entrySet()
. If you override entrySet
, you may wish to override firstEntry
to forward to this implementation.
protected K standardFirstKey()
A sensible definition of ForwardingSortedMap.firstKey()
in terms of firstEntry
. If you override firstEntry
, you may wish to override firstKey
to forward to this implementation.
protected Map.Entry<K,V> standardLastEntry()
A sensible definition of lastEntry()
in terms of the iterator()
of the ForwardingMap.entrySet()
of descendingMap()
. If you override descendingMap
, you may wish to override lastEntry
to forward to this implementation.
protected K standardLastKey()
A sensible definition of ForwardingSortedMap.lastKey()
in terms of lastEntry
. If you override lastEntry
, you may wish to override lastKey
to forward to this implementation.
public Map.Entry<K,V> pollFirstEntry()
pollFirstEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardPollFirstEntry()
A sensible definition of pollFirstEntry()
in terms of the iterator
of entrySet
. If you override entrySet
, you may wish to override pollFirstEntry
to forward to this implementation.
public Map.Entry<K,V> pollLastEntry()
pollLastEntry
in interface NavigableMap<K,V>
protected Map.Entry<K,V> standardPollLastEntry()
A sensible definition of pollFirstEntry()
in terms of the iterator
of the entrySet
of descendingMap
. If you override descendingMap
, you may wish to override pollFirstEntry
to forward to this implementation.
public NavigableMap<K,V> descendingMap()
descendingMap
in interface NavigableMap<K,V>
public NavigableSet<K> navigableKeySet()
navigableKeySet
in interface NavigableMap<K,V>
public NavigableSet<K> descendingKeySet()
descendingKeySet
in interface NavigableMap<K,V>
@Beta protected NavigableSet<K> standardDescendingKeySet()
A sensible definition of descendingKeySet()
as the navigableKeySet
of descendingMap()
. (The ForwardingNavigableMap.StandardDescendingMap
implementation implements navigableKeySet
on its own, so as not to cause an infinite loop.) If you override descendingMap
, you may wish to override descendingKeySet
to forward to this implementation.
protected SortedMap<K,V> standardSubMap(K fromKey, K toKey)
A sensible definition of ForwardingSortedMap.subMap(Object, Object)
in terms of subMap(Object, boolean, Object, boolean)
. If you override subMap(K, boolean, K, boolean)
, you may wish to override subMap
to forward to this implementation.
standardSubMap
in class ForwardingSortedMap<K,V>
public NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
subMap
in interface NavigableMap<K,V>
public NavigableMap<K,V> headMap(K toKey, boolean inclusive)
headMap
in interface NavigableMap<K,V>
public NavigableMap<K,V> tailMap(K fromKey, boolean inclusive)
tailMap
in interface NavigableMap<K,V>
protected SortedMap<K,V> standardHeadMap(K toKey)
A sensible definition of ForwardingSortedMap.headMap(Object)
in terms of headMap(Object, boolean)
. If you override headMap(K, boolean)
, you may wish to override headMap
to forward to this implementation.
protected SortedMap<K,V> standardTailMap(K fromKey)
A sensible definition of ForwardingSortedMap.tailMap(Object)
in terms of tailMap(Object, boolean)
. If you override tailMap(K, boolean)
, you may wish to override tailMap
to forward to this implementation.