Package 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
Description
`ComputedObservableMap(IObservableSet<K> keySet)`
`ComputedObservableMap(IObservableSet<K> keySet, Object valueType)`

## Method Summary

Modifier and Type
Method
Description
`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 final void`
`fireSingleChange(K key, V oldValue, V newValue)`
`protected void`
`firstListenerAdded()`
`final 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()`
`final 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 Details

### ComputedObservableMap

public ComputedObservableMap(IObservableSet<K> keySet)

Parameters:
  `keySet` - the key set

### ComputedObservableMap

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

Parameters:
  `keySet` - the key set
  `valueType` - the value type
Since:
  1.2

## Method Details

### 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 `IObservableMap<K,V>`
Specified by:
  `remove` in interface `Map<K,V>`
Overrides:
  `remove` in class `AbstractMap<K,V>`
Since:
  1.3

### containsKey

public boolean containsKey(Object key)

Specified by:
  `containsKey` in interface `IObservableMap<K,V>`
Specified by:
  `containsKey` in interface `Map<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 `IObservableMap<K,V>`
Specified by:
  `entrySet` in interface `Map<K,V>`
Specified by:
  `entrySet` in class `AbstractMap<K,V>`

### keySet

public Set<K> keySet()

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

### get

public final V get(Object key)

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

### put

public final V put(K key, V value)

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

### unhookListener

protected abstract void unhookListener(K removedKey)

Parameters:
  `removedKey` - element to remove listener from

### hookListener

protected abstract void hookListener(K addedKey)

Parameters:
  `addedKey` - element to add listener to

### doGet

protected abstract V doGet(K key)

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

### doPut

protected abstract V doPut(K key, V value)

Parameters:
  `key` - the key
  `value` - key's new 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>`