org.eclipse.core.databinding.observable.map

## Class ComputedObservableMap<K,V>

- java.lang.Object
- - java.util.AbstractMap<K,V>
  - - org.eclipse.core.databinding.observable.map.AbstractObservableMap<K,V>
    - - org.eclipse.core.databinding.observable.map.ComputedObservableMap<K,V>

Type Parameters:
  `K` - type of the keys to the map
  `V` - type of the values in the map

All Implemented Interfaces:
  Map<K,V>, IObservable, IObservableMap<K,V>

    public abstract class ComputedObservableMap<K,V>
    extends AbstractObservableMap<K,V>

Maps objects to one of their attributes. Tracks changes to the underlying observable set of objects (keys), as well as changes to attribute values.

### Nested Class Summary

### Nested classes/interfaces inherited from class java.util.AbstractMap

`AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>`

### Nested classes/interfaces inherited from interface java.util.Map

`Map.Entry<K,V>`

### Constructor Summary

Constructors
Constructor and Description
`ComputedObservableMap(IObservableSet<K> keySet)`
`ComputedObservableMap(IObservableSet<K> keySet, Object valueType)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
`boolean` `containsKey(Object key)`
`void` `dispose()` Disposes of this observable object, removing all listeners registered with this object, and all listeners this object might have registered on other objects.
`protected abstract V` `doGet(K key)`
`protected abstract V` `doPut(K key, V value)`
`Set<Map.Entry<K,V>>` `entrySet()`
`protected void` `fireSingleChange(K key, V oldValue, V newValue)`
`protected void` `firstListenerAdded()`
`V` `get(Object key)`
`Object` `getKeyType()` Returns the element type for the `keyset` of this observable map, or `null` if the keyset is untyped.
`Object` `getValueType()` Returns the element type for the `values` of this observable map, or `null` if the values collection is untyped.
`protected abstract void` `hookListener(K addedKey)`
`protected void` `init()` Deprecated. Subclasses are no longer required to call this method.
`boolean` `isStale()` Returns whether the state of this observable is stale and is expected to change soon.
`Set<K>` `keySet()`
`protected void` `lastListenerRemoved()`
`V` `put(K key, V value)`
`V` `remove(Object key)`
`protected abstract void` `unhookListener(K removedKey)`

### Methods inherited from class org.eclipse.core.databinding.observable.map.AbstractObservableMap

`addChangeListener, addDisposeListener, addMapChangeListener, addStaleListener, checkRealm, fireChange, fireMapChange, fireStale, getRealm, hasListeners, isDisposed, removeChangeListener, removeDisposeListener, removeMapChangeListener, removeStaleListener, setStale`

### Methods inherited from class java.util.AbstractMap

`clear, clone, containsValue, equals, hashCode, isEmpty, putAll, size, toString, values`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.core.databinding.observable.map.IObservableMap

`containsValue, equals, hashCode, isEmpty, size, values`

### Methods inherited from interface java.util.Map

`clear, compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putAll, putIfAbsent, remove, replace, replace, replaceAll`

### Constructor Detail

#### ComputedObservableMap

    public ComputedObservableMap(IObservableSet<K> keySet)

Parameters:
  `keySet` -

#### ComputedObservableMap

    public ComputedObservableMap(IObservableSet<K> keySet,
                                 Object valueType)

Parameters:
  `keySet` -
  `valueType` -
Since:
  1.2

### Method Detail

#### init

    @Deprecated
    protected void init()

Deprecated. Subclasses are no longer required to call this method.

#### firstListenerAdded

    protected void firstListenerAdded()

Overrides:
  `firstListenerAdded` in class `AbstractObservableMap<K,V>`

#### lastListenerRemoved

    protected void lastListenerRemoved()

Overrides:
  `lastListenerRemoved` in class `AbstractObservableMap<K,V>`

#### fireSingleChange

    protected final void fireSingleChange(K key,
                                          V oldValue,
                                          V newValue)

#### getKeyType

    public Object getKeyType()

Description copied from interface: `IObservableMap`
Returns the element type for the `keyset` of this observable map, or `null` if the keyset is untyped.

Specified by:
  `getKeyType` in interface `IObservableMap<K,V>`
Overrides:
  `getKeyType` in class `AbstractObservableMap<K,V>`
Returns:
  the element type for the `keyset` of this observable map, or `null` if the keyset is untyped.
Since:
  1.2

#### getValueType

    public Object getValueType()

Description copied from interface: `IObservableMap`
Returns the element type for the `values` of this observable map, or `null` if the values collection is untyped.

Specified by:
  `getValueType` in interface `IObservableMap<K,V>`
Overrides:
  `getValueType` in class `AbstractObservableMap<K,V>`
Returns:
  the element type for the `values` of this observable map, or `null` if the values collection is untyped.
Since:
  1.2

#### remove

    public V remove(Object key)

Specified by:
  `remove` in interface `Map<K,V>`
Specified by:
  `remove` in interface `IObservableMap<K,V>`
Overrides:
  `remove` in class `AbstractMap<K,V>`
Since:
  1.3

#### containsKey

    public boolean containsKey(Object key)

Specified by:
  `containsKey` in interface `Map<K,V>`
Specified by:
  `containsKey` in interface `IObservableMap<K,V>`
Overrides:
  `containsKey` in class `AbstractMap<K,V>`
Since:
  1.3

#### entrySet

    public Set<Map.Entry<K,V>> entrySet()

Specified by:
  `entrySet` in interface `Map<K,V>`
Specified by:
  `entrySet` in interface `IObservableMap<K,V>`
Specified by:
  `entrySet` in class `AbstractMap<K,V>`

#### keySet

    public Set<K> keySet()

Specified by:
  `keySet` in interface `Map<K,V>`
Specified by:
  `keySet` in interface `IObservableMap<K,V>`
Overrides:
  `keySet` in class `AbstractMap<K,V>`

#### get

    public final V get(Object key)

Specified by:
  `get` in interface `Map<K,V>`
Specified by:
  `get` in interface `IObservableMap<K,V>`
Overrides:
  `get` in class `AbstractMap<K,V>`

#### put

    public final V put(K key,
                       V value)

Specified by:
  `put` in interface `Map<K,V>`
Specified by:
  `put` in interface `IObservableMap<K,V>`
Overrides:
  `put` in class `AbstractMap<K,V>`

#### unhookListener

    protected abstract void unhookListener(K removedKey)

Parameters:
  `removedKey` -

#### hookListener

    protected abstract void hookListener(K addedKey)

Parameters:
  `addedKey` -

#### doGet

    protected abstract V doGet(K key)

Parameters:
  `key` -
Returns:
  the value for the given key

#### doPut

    protected abstract V doPut(K key,
                               V value)

Parameters:
  `key` -
  `value` -
Returns:
  the old value for the given key

#### isStale

    public boolean isStale()

Description copied from interface: `IObservable`
Returns whether the state of this observable is stale and is expected to change soon. A non-stale observable that becomes stale will notify its stale listeners. A stale object that becomes non-stale does so by changing its state and notifying its change listeners, it does not notify its stale listeners about becoming non-stale. Clients that do not expect asynchronous changes may ignore staleness of observable objects.

Specified by:
  `isStale` in interface `IObservable`
Overrides:
  `isStale` in class `AbstractObservableMap<K,V>`
Returns:
  true if this observable's state is stale and will change soon.

#### dispose

    public void dispose()

Description copied from interface: `IObservable`
Disposes of this observable object, removing all listeners registered with this object, and all listeners this object might have registered on other objects.

Specified by:
  `dispose` in interface `IObservable`
Overrides:
  `dispose` in class `AbstractObservableMap<K,V>`