Javolution 6.0.0 java
javolution.util.internal.map.AtomicMapImpl< K, V > Class Template Reference
Inheritance diagram for javolution.util.internal.map.AtomicMapImpl< K, V >:
[legend]
Collaboration diagram for javolution.util.internal.map.AtomicMapImpl< K, V >:
[legend]

Classes

class  IteratorImpl
 

Public Member Functions

 AtomicMapImpl (MapService< K, V > target)
 
synchronized void clear ()
 
synchronized AtomicMapImpl< K, V > clone ()
 
boolean containsKey (Object key)
 
boolean containsValue (Object value)
 
get (Object key)
 
boolean isEmpty ()
 
Iterator< Entry< K, V > > iterator ()
 
Equality<? super K > keyComparator ()
 
synchronized V put (K key, V value)
 
synchronized void putAll (Map<? extends K, ? extends V > m)
 
synchronized V putIfAbsent (K key, V value)
 
synchronized V remove (Object key)
 
synchronized boolean remove (Object key, Object value)
 
synchronized V replace (K key, V value)
 
synchronized boolean replace (K key, V oldValue, V newValue)
 
int size ()
 
MapService< K, V >[] split (int n)
 
MapService< K, V > threadSafe ()
 
synchronized void update (Consumer< MapService< K, V >> action, MapService< K, V > view)
 
Equality<? super V > valueComparator ()
 
SetService< Entry< K, V > > entrySet ()
 
SetService< K > keySet ()
 
void perform (Consumer< MapService< K, V >> action, MapService< K, V > view)
 
void perform (Consumer< T > action, T part)
 
void update (Consumer< T > action, T part)
 
CollectionService< V > values ()
 

Protected Member Functions

MapService< K, V > cloneTarget ()
 
MapService< K, V > targetView ()
 
final boolean updateInProgress ()
 
MapService< K, V > target ()
 

Protected Attributes

volatile MapService< K, V > immutable
 
transient Thread updatingThread
 

Private Attributes

MapService< K, V > target
 

Static Private Attributes

static final long serialVersionUID = 0x600L
 

Detailed Description

An atomic view over a map (copy-on-write).

Definition at line 21 of file AtomicMapImpl.java.

Constructor & Destructor Documentation

◆ AtomicMapImpl()

Definition at line 51 of file AtomicMapImpl.java.

51  {
52  super(target);
53  this.immutable = cloneTarget();
54  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), and javolution.util.internal.map.MapView< K, V >.target.

Here is the call graph for this function:

Member Function Documentation

◆ clear()

synchronized void javolution.util.internal.map.AtomicMapImpl< K, V >.clear ( )

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 57 of file AtomicMapImpl.java.

57  {
58  clear();
59  if (!updateInProgress()) {
61  }
62  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ clone()

synchronized AtomicMapImpl<K, V> javolution.util.internal.map.AtomicMapImpl< K, V >.clone ( )

Returns a copy of this map; updates of the copy should not impact the original.

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 65 of file AtomicMapImpl.java.

65  {
66  AtomicMapImpl<K, V> copy = (AtomicMapImpl<K, V>) super.clone();
67  copy.updatingThread = null;
68  return copy;
69  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.clone(), and javolution.util.internal.map.AtomicMapImpl< K, V >.updatingThread.

Referenced by javolution.util.internal.map.AtomicMapImpl< K, V >.clone().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cloneTarget()

MapService<K, V> javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget ( )
protected

Returns a clone copy of target.

Definition at line 183 of file AtomicMapImpl.java.

183  {
184  try {
185  return target().clone();
186  } catch (CloneNotSupportedException e) {
187  throw new Error("Cannot happen since target is Cloneable.");
188  }
189  }

References javolution.util.internal.map.MapView< K, V >.target.

Referenced by javolution.util.internal.map.AtomicMapImpl< K, V >.AtomicMapImpl(), javolution.util.internal.map.AtomicMapImpl< K, V >.clear(), javolution.util.internal.map.AtomicMapImpl< K, V >.put(), javolution.util.internal.map.AtomicMapImpl< K, V >.putAll(), javolution.util.internal.map.AtomicMapImpl< K, V >.putIfAbsent(), javolution.util.internal.map.AtomicMapImpl< K, V >.remove(), javolution.util.internal.map.AtomicMapImpl< K, V >.replace(), and javolution.util.internal.map.AtomicMapImpl< K, V >.update().

Here is the caller graph for this function:

◆ containsKey()

boolean javolution.util.internal.map.AtomicMapImpl< K, V >.containsKey ( Object  key)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 72 of file AtomicMapImpl.java.

72  {
73  return targetView().containsKey(key);
74  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ containsValue()

boolean javolution.util.internal.map.AtomicMapImpl< K, V >.containsValue ( Object  value)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 77 of file AtomicMapImpl.java.

77  {
78  return targetView().containsValue(value);
79  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ entrySet()

SetService<Entry<K, V> > javolution.util.internal.map.MapView< K, V >.entrySet ( )
inherited

Returns a set view over the entries of this map. The set support adding/removing entries. Two entries are considered equals if they have the same key regardless of their values.

Implements javolution.util.service.MapService< K, V >.

Reimplemented in javolution.util.internal.map.sorted.SortedMapView< K, V >, javolution.util.internal.map.sorted.SharedSortedMapImpl< K, V >, javolution.util.internal.map.sorted.AtomicSortedMapImpl< K, V >, and javolution.util.internal.map.sorted.UnmodifiableSortedMapImpl< K, V >.

Definition at line 253 of file MapView.java.

253  {
254  return new EntrySet();
255  }

Referenced by javolution.util.internal.map.MapView< K, V >.KeySet.KeySet(), and javolution.util.internal.map.MapView< K, V >.Values.Values().

Here is the caller graph for this function:

◆ get()

V javolution.util.internal.map.AtomicMapImpl< K, V >.get ( Object  key)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 82 of file AtomicMapImpl.java.

82  {
83  return targetView().get(key);
84  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ isEmpty()

boolean javolution.util.internal.map.AtomicMapImpl< K, V >.isEmpty ( )

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 87 of file AtomicMapImpl.java.

87  {
88  return targetView().isEmpty();
89  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ iterator()

Iterator<Entry<K, V> > javolution.util.internal.map.AtomicMapImpl< K, V >.iterator ( )

Returns an iterator over this map entries.

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 92 of file AtomicMapImpl.java.

92  {
93  return new IteratorImpl();
94  }

◆ keyComparator()

Equality<? super K> javolution.util.internal.map.AtomicMapImpl< K, V >.keyComparator ( )

Returns the key comparator used for key equality or order if the map is sorted.

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 97 of file AtomicMapImpl.java.

97  {
98  return targetView().keyComparator();
99  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ keySet()

SetService<K> javolution.util.internal.map.MapView< K, V >.keySet ( )
inherited

Returns a set view over the key of this map, the set support adding new key for which the value is automatically

null

.

Implements javolution.util.service.MapService< K, V >.

Reimplemented in javolution.util.internal.map.sorted.SortedMapView< K, V >, javolution.util.internal.map.sorted.SharedSortedMapImpl< K, V >, javolution.util.internal.map.sorted.AtomicSortedMapImpl< K, V >, and javolution.util.internal.map.sorted.UnmodifiableSortedMapImpl< K, V >.

Definition at line 272 of file MapView.java.

272  {
273  return new KeySet();
274  }

Referenced by javolution.util.FastSet< Index >.FastSet().

Here is the caller graph for this function:

◆ perform() [1/2]

void javolution.util.internal.map.MapView< K, V >.perform ( Consumer< MapService< K, V >>  action,
MapService< K, V >  view 
)
inherited

Reimplemented in javolution.util.internal.map.ParallelMapImpl< K, V >, and javolution.util.internal.map.SequentialMapImpl< K, V >.

Definition at line 277 of file MapView.java.

277  {
278  if (target == null) {
279  action.accept(view);
280  } else {
281  target.perform(action, view);
282  }
283  }

References javolution.util.internal.map.MapView< K, V >.target.

Referenced by javolution.util.internal.map.MapView< K, V >.EntrySet.perform().

Here is the caller graph for this function:

◆ perform() [2/2]

void javolution.util.function.Splittable< T >.perform ( Consumer< T >  action,
part 
)
inherited

Executes a read-only action on the specified part of this object.

Parameters
actionthe read-only action.
partthis object or a part of it.
Exceptions
UnsupportedOperationExceptionif the action tries to update the specified part.

◆ put()

synchronized V javolution.util.internal.map.AtomicMapImpl< K, V >.put ( key,
value 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 102 of file AtomicMapImpl.java.

102  {
103  V v = target().put(key, value);
105  return v;
106  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ putAll()

synchronized void javolution.util.internal.map.AtomicMapImpl< K, V >.putAll ( Map<? extends K, ? extends V >  m)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 109 of file AtomicMapImpl.java.

109  {
110  target().putAll(m);
112  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ putIfAbsent()

synchronized V javolution.util.internal.map.AtomicMapImpl< K, V >.putIfAbsent ( key,
value 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 115 of file AtomicMapImpl.java.

115  {
116  V v = target().putIfAbsent(key, value);
118  return v;
119  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ remove() [1/2]

synchronized V javolution.util.internal.map.AtomicMapImpl< K, V >.remove ( Object  key)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 122 of file AtomicMapImpl.java.

122  {
123  V v = target().remove(key);
125  return v;
126  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Referenced by javolution.util.internal.map.AtomicMapImpl< K, V >.IteratorImpl.remove().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ remove() [2/2]

synchronized boolean javolution.util.internal.map.AtomicMapImpl< K, V >.remove ( Object  key,
Object  value 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 129 of file AtomicMapImpl.java.

129  {
130  boolean changed = target().remove(key, value);
131  if (changed && !updateInProgress()) immutable = cloneTarget();
132  return changed;
133  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ replace() [1/2]

synchronized boolean javolution.util.internal.map.AtomicMapImpl< K, V >.replace ( key,
oldValue,
newValue 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 143 of file AtomicMapImpl.java.

143  {
144  boolean changed = target().replace(key, oldValue, newValue);
145  if (changed && !updateInProgress()) immutable = cloneTarget();
146  return changed;
147  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ replace() [2/2]

synchronized V javolution.util.internal.map.AtomicMapImpl< K, V >.replace ( key,
value 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 136 of file AtomicMapImpl.java.

136  {
137  V v = target().replace(key, value);
139  return v;
140  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress().

Here is the call graph for this function:

◆ size()

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 150 of file AtomicMapImpl.java.

150  {
151  return targetView().size();
152  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ split()

MapService<K, V> [] javolution.util.internal.map.AtomicMapImpl< K, V >.split ( int  n)

Returns

n

distinct parts of this object. This method may return an array of size less than

n

(e.g. an array of size one if this object cannot split).

Parameters
nthe number of parts.
Returns
the distinct parts (or views) for this object.
Exceptions
IllegalArgumentExceptionif
n <= 1

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 156 of file AtomicMapImpl.java.

156  { // Split not supported.
157  return new MapService[] { this };
158  }

◆ target()

◆ targetView()

◆ threadSafe()

Returns a thread-safe version of this service (used during parallel updates).

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Reimplemented in javolution.util.internal.map.sorted.AtomicSortedMapImpl< K, V >.

Definition at line 161 of file AtomicMapImpl.java.

161  {
162  return this;
163  }

◆ update() [1/2]

synchronized void javolution.util.internal.map.AtomicMapImpl< K, V >.update ( Consumer< MapService< K, V >>  action,
MapService< K, V >  view 
)

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 166 of file AtomicMapImpl.java.

167  {
168  updatingThread = Thread.currentThread(); // Update in progress.
169  try {
170  target().update(action, view); // No copy performed.
171  } finally {
172  updatingThread = null;
173  immutable = cloneTarget(); // One single copy !
174  }
175  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.AtomicMapImpl< K, V >.immutable, javolution.util.internal.map.MapView< K, V >.target, and javolution.util.internal.map.AtomicMapImpl< K, V >.updatingThread.

Here is the call graph for this function:

◆ update() [2/2]

void javolution.util.function.Splittable< T >.update ( Consumer< T >  action,
part 
)
inherited

Executes an update action on the specified part of this object. Any change to the part is reflected in the whole (this object).

Parameters
actionthe action authorized to update this object part.
partthis object or a part of it.

◆ updateInProgress()

final boolean javolution.util.internal.map.AtomicMapImpl< K, V >.updateInProgress ( )
protected

Indicates if the current thread is doing an atomic update.

Definition at line 200 of file AtomicMapImpl.java.

200  {
201  return updatingThread == Thread.currentThread();
202  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.updatingThread.

Referenced by javolution.util.internal.map.AtomicMapImpl< K, V >.clear(), javolution.util.internal.map.AtomicMapImpl< K, V >.put(), javolution.util.internal.map.AtomicMapImpl< K, V >.putAll(), javolution.util.internal.map.AtomicMapImpl< K, V >.putIfAbsent(), javolution.util.internal.map.AtomicMapImpl< K, V >.remove(), and javolution.util.internal.map.AtomicMapImpl< K, V >.replace().

Here is the caller graph for this function:

◆ valueComparator()

Equality<? super V> javolution.util.internal.map.AtomicMapImpl< K, V >.valueComparator ( )

Returns the value comparator used for value equality.

Reimplemented from javolution.util.internal.map.MapView< K, V >.

Definition at line 178 of file AtomicMapImpl.java.

178  {
179  return targetView().valueComparator();
180  }

References javolution.util.internal.map.AtomicMapImpl< K, V >.targetView().

Here is the call graph for this function:

◆ values()

Returns a collection view over the values of this map, the collection support value/entry removal but not adding new values.

Implements javolution.util.service.MapService< K, V >.

Definition at line 373 of file MapView.java.

373  {
374  return new Values();
375  }

Referenced by javolution.util.internal.map.MapView< K, V >.containsValue().

Here is the caller graph for this function:

Member Data Documentation

◆ immutable

◆ serialVersionUID

final long javolution.util.internal.map.AtomicMapImpl< K, V >.serialVersionUID = 0x600L
staticprivate

Definition at line 47 of file AtomicMapImpl.java.

◆ target

MapService<K, V> javolution.util.internal.map.MapView< K, V >.target
privateinherited

Reimplemented in javolution.util.internal.map.sorted.SortedMapView< K, V >, javolution.util.internal.map.sorted.SharedSortedMapImpl< K, V >, and javolution.util.internal.map.sorted.UnmodifiableSortedMapImpl< K, V >.

Definition at line 213 of file MapView.java.

Referenced by javolution.util.internal.map.AtomicMapImpl< K, V >.AtomicMapImpl(), javolution.util.internal.map.sorted.AtomicSortedMapImpl< K, V >.AtomicSortedMapImpl(), javolution.util.internal.map.SharedMapImpl< K, V >.clear(), javolution.util.internal.map.MapView< K, V >.clone(), javolution.util.internal.map.AtomicMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.SharedMapImpl< K, V >.cloneTarget(), javolution.util.internal.map.sorted.AtomicSortedMapImpl< K, V >.comparator(), javolution.util.internal.map.SequentialMapImpl< K, V >.containsKey(), javolution.util.internal.map.ParallelMapImpl< K, V >.containsKey(), javolution.util.internal.map.UnmodifiableMapImpl< K, V >.containsKey(), javolution.util.internal.map.SharedMapImpl< K, V >.containsKey(), javolution.util.internal.map.SharedMapImpl< K, V >.containsValue(), javolution.util.internal.map.SequentialMapImpl< K, V >.get(), javolution.util.internal.map.ParallelMapImpl< K, V >.get(), javolution.util.internal.map.UnmodifiableMapImpl< K, V >.get(), javolution.util.internal.map.SharedMapImpl< K, V >.get(), javolution.util.internal.map.SharedMapImpl< K, V >.isEmpty(), javolution.util.internal.map.SequentialMapImpl< K, V >.iterator(), javolution.util.internal.map.ParallelMapImpl< K, V >.iterator(), javolution.util.internal.map.SequentialMapImpl< K, V >.keyComparator(), javolution.util.internal.map.ParallelMapImpl< K, V >.keyComparator(), javolution.util.internal.map.UnmodifiableMapImpl< K, V >.keyComparator(), javolution.util.internal.map.SharedMapImpl< K, V >.keyComparator(), javolution.util.internal.map.MapView< K, V >.MapView(), javolution.util.internal.map.ParallelMapImpl< K, V >.ParallelMapImpl(), javolution.util.internal.map.ParallelMapImpl< K, V >.perform(), javolution.util.internal.map.MapView< K, V >.perform(), javolution.util.internal.map.SequentialMapImpl< K, V >.put(), javolution.util.internal.map.ParallelMapImpl< K, V >.put(), javolution.util.internal.map.AtomicMapImpl< K, V >.put(), javolution.util.internal.map.SharedMapImpl< K, V >.put(), javolution.util.internal.map.AtomicMapImpl< K, V >.putAll(), javolution.util.internal.map.SharedMapImpl< K, V >.putAll(), javolution.util.internal.map.AtomicMapImpl< K, V >.putIfAbsent(), javolution.util.internal.map.SharedMapImpl< K, V >.putIfAbsent(), javolution.util.internal.map.SequentialMapImpl< K, V >.remove(), javolution.util.internal.map.ParallelMapImpl< K, V >.remove(), javolution.util.internal.map.AtomicMapImpl< K, V >.remove(), javolution.util.internal.map.SharedMapImpl< K, V >.remove(), javolution.util.internal.map.AtomicMapImpl< K, V >.replace(), javolution.util.internal.map.SharedMapImpl< K, V >.replace(), javolution.util.internal.map.SequentialMapImpl< K, V >.SequentialMapImpl(), javolution.util.internal.map.SharedMapImpl< K, V >.SharedMapImpl(), javolution.util.internal.map.SharedMapImpl< K, V >.size(), javolution.util.internal.map.SharedMapImpl< K, V >.split(), javolution.util.internal.map.MapView< K, V >.split(), javolution.util.internal.map.MapView< K, V >.target(), javolution.util.internal.map.AtomicMapImpl< K, V >.targetView(), javolution.util.internal.map.UnmodifiableMapImpl< K, V >.UnmodifiableMapImpl(), javolution.util.internal.map.ParallelMapImpl< K, V >.update(), javolution.util.internal.map.AtomicMapImpl< K, V >.update(), javolution.util.internal.map.MapView< K, V >.update(), javolution.util.internal.map.SequentialMapImpl< K, V >.valueComparator(), javolution.util.internal.map.UnmodifiableMapImpl< K, V >.valueComparator(), javolution.util.internal.map.ParallelMapImpl< K, V >.valueComparator(), and javolution.util.internal.map.SharedMapImpl< K, V >.valueComparator().

◆ updatingThread


The documentation for this class was generated from the following file:
javolution.util.internal.map.AtomicMapImpl.updateInProgress
final boolean updateInProgress()
Definition: AtomicMapImpl.java:200
javolution.util.internal.map.AtomicMapImpl.targetView
MapService< K, V > targetView()
Definition: AtomicMapImpl.java:193
javolution.util.internal.map.AtomicMapImpl.immutable
volatile MapService< K, V > immutable
Definition: AtomicMapImpl.java:48
javolution.util.internal.map.AtomicMapImpl.clear
synchronized void clear()
Definition: AtomicMapImpl.java:57
javolution.util.internal.map.AtomicMapImpl.cloneTarget
MapService< K, V > cloneTarget()
Definition: AtomicMapImpl.java:183
EntrySet
javolution.util.internal.map.AtomicMapImpl.updatingThread
transient Thread updatingThread
Definition: AtomicMapImpl.java:49
Thread
javolution.util.internal.map.MapView.target
MapService< K, V > target
Definition: MapView.java:213