# Class MapExpression<K,V>

java.lang.Object
javafx.beans.binding.MapExpression<K,V>

Type Parameters:
  `K` - the type of the key elements
  `V` - the type of the value elements

All Implemented Interfaces:
  `Map<K,V>`, `Observable`, `ObservableMapValue<K,V>`, `ObservableObjectValue<ObservableMap<K,V>>`, `ObservableValue<ObservableMap<K,V>>`, `ObservableMap<K,V>`

Direct Known Subclasses:
  `MapBinding`, `ReadOnlyMapProperty`

public abstract class MapExpression<K,V> extends Object implements ObservableMapValue<K,V>
`MapExpression` is an `ObservableMapValue` plus additional convenience methods to generate bindings in a fluent style.

A concrete sub-class of `MapExpression` has to implement the method `ObservableObjectValue.get()`, which provides the actual value of this expression.

If the wrapped list of a `MapExpression` is `null`, all methods implementing the `Map` interface will behave as if they were applied to an immutable empty list.

Since:
  JavaFX 2.1

- ## Nested Class Summary

  ### Nested classes/interfaces declared in interface java.util.Map

  `Map.Entry<K,V>`

- ## Property Summary

  Properties
  Type
  Property
  Description
  `abstract ReadOnlyBooleanProperty`
  `empty`
  A boolean property that is `true`, if the map is empty.
  `abstract ReadOnlyIntegerProperty`
  `size`
  An integer property that represents the size of the map.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MapExpression()`
  Creates a default `MapExpression`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `StringBinding`
  `asString()`
  Creates a `StringBinding` that holds the value of the `MapExpression` turned into a `String`.
  `void`
  `clear()`
  `boolean`
  `containsKey(Object obj)`
  `boolean`
  `containsValue(Object obj)`
  `abstract ReadOnlyBooleanProperty`
  `emptyProperty()`
  A boolean property that is `true`, if the map is empty.
  `Set<Map.Entry<K,V>>`
  `entrySet()`
  `V`
  `get(Object key)`
  `int`
  `getSize()`
  The size of the map
  `ObservableMap<K,V>`
  `getValue()`
  Returns the current value of this `ObservableValue`
  `boolean`
  `isEmpty()`
  Gets the value of the `empty` property.
  `BooleanBinding`
  `isEqualTo(ObservableMap<?,?> other)`
  Creates a new `BooleanBinding` that holds `true` if this map is equal to another `ObservableMap`.
  `BooleanBinding`
  `isNotEqualTo(ObservableMap<?,?> other)`
  Creates a new `BooleanBinding` that holds `true` if this map is not equal to another `ObservableMap`.
  `BooleanBinding`
  `isNotNull()`
  Creates a new `BooleanBinding` that holds `true` if the wrapped map is not `null`.
  `BooleanBinding`
  `isNull()`
  Creates a new `BooleanBinding` that holds `true` if the wrapped map is `null`.
  `Set<K>`
  `keySet()`
  `static <K,V> MapExpression<K,V>`
  `mapExpression(ObservableMapValue<K,V> value)`
  Returns a `MapExpression` that wraps a `ObservableMapValue`.
  `V`
  `put(K key, V value)`
  `void`
  `putAll(Map<? extends K, ? extends V> elements)`
  `V`
  `remove(Object obj)`
  `int`
  `size()`
  `abstract ReadOnlyIntegerProperty`
  `sizeProperty()`
  An integer property that represents the size of the map.
  `ObjectBinding<V>`
  `valueAt(ObservableValue<K> key)`
  Creates a new `ObjectBinding` that contains the mapping of the specified key.
  `ObjectBinding<V>`
  `valueAt(K key)`
  Creates a new `ObjectBinding` that contains the mapping of the specified key.
  `Collection<V>`
  `values()`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods declared in interface java.util.Map

  `compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

  ### Methods declared in interface javafx.beans.Observable

  `addListener, removeListener, subscribe`

  ### Methods declared in interface javafx.collections.ObservableMap

  `addListener, removeListener`

  ### Methods declared in interface javafx.beans.value.ObservableObjectValue

  `get`

  ### Methods declared in interface javafx.beans.value.ObservableValue

  `addListener, flatMap, map, orElse, removeListener, subscribe, subscribe, when`

- ## Property Details

  - ### size

    public abstract ReadOnlyIntegerProperty sizeProperty
    An integer property that represents the size of the map.
    See Also:
      - `getSize()`
      - `sizeProperty()`

  - ### empty

    public abstract ReadOnlyBooleanProperty emptyProperty
    A boolean property that is `true`, if the map is empty.
    See Also:
      - `isEmpty()`
      - `emptyProperty()`

- ## Constructor Details

  - ### MapExpression

    public MapExpression()
    Creates a default `MapExpression`.

- ## Method Details

  - ### getValue

    public ObservableMap<K,V> getValue()
    Description copied from interface: `ObservableValue`
    Returns the current value of this `ObservableValue`
    Specified by:
      `getValue` in interface `ObservableValue<K>`
    Returns:
      The current value

  - ### mapExpression

    public static <K,V> MapExpression<K,V> mapExpression(ObservableMapValue<K,V> value)
    Returns a `MapExpression` that wraps a `ObservableMapValue`. If the `ObservableMapValue` is already a `MapExpression`, it will be returned. Otherwise a new `MapBinding` is created that is bound to the `ObservableMapValue`.
    Type Parameters:
      `K` - the type of the key elements
      `V` - the type of the value elements
    Parameters:
      `value` - The source `ObservableMapValue`
    Returns:
      A `MapExpression` that wraps the `ObservableMapValue` if necessary
    Throws:
      `NullPointerException` - if `value` is `null`

  - ### getSize

    public int getSize()
    The size of the map
    Returns:
      the size

  - ### sizeProperty

    public abstract ReadOnlyIntegerProperty sizeProperty()
    An integer property that represents the size of the map.
    Returns:
      the property
    See Also:
      - `getSize()`

  - ### emptyProperty

    public abstract ReadOnlyBooleanProperty emptyProperty()
    A boolean property that is `true`, if the map is empty.
    Returns:
      the `ReadOnlyBooleanProperty`
    See Also:
      - `isEmpty()`

  - ### valueAt

    public ObjectBinding<V> valueAt(K key)
    Creates a new `ObjectBinding` that contains the mapping of the specified key.
    Parameters:
      `key` - the key of the mapping
    Returns:
      the `ObjectBinding`

  - ### valueAt

    public ObjectBinding<V> valueAt(ObservableValue<K> key)
    Creates a new `ObjectBinding` that contains the mapping of the specified key.
    Parameters:
      `key` - the key of the mapping
    Returns:
      the `ObjectBinding`
    Throws:
      `NullPointerException` - if `key` is `null`

  - ### isEqualTo

    public BooleanBinding isEqualTo(ObservableMap<?,?> other)
    Creates a new `BooleanBinding` that holds `true` if this map is equal to another `ObservableMap`.
    Parameters:
      `other` - the other `ObservableMap`
    Returns:
      the new `BooleanBinding`
    Throws:
      `NullPointerException` - if `other` is `null`

  - ### isNotEqualTo

    public BooleanBinding isNotEqualTo(ObservableMap<?,?> other)
    Creates a new `BooleanBinding` that holds `true` if this map is not equal to another `ObservableMap`.
    Parameters:
      `other` - the other `ObservableMap`
    Returns:
      the new `BooleanBinding`
    Throws:
      `NullPointerException` - if `other` is `null`

  - ### isNull

    public BooleanBinding isNull()
    Creates a new `BooleanBinding` that holds `true` if the wrapped map is `null`.
    Returns:
      the new `BooleanBinding`

  - ### isNotNull

    public BooleanBinding isNotNull()
    Creates a new `BooleanBinding` that holds `true` if the wrapped map is not `null`.
    Returns:
      the new `BooleanBinding`

  - ### asString

    public StringBinding asString()
    Creates a `StringBinding` that holds the value of the `MapExpression` turned into a `String`. If the value of this `MapExpression` changes, the value of the `StringBinding` will be updated automatically.
    Returns:
      the new `StringBinding`

  - ### size

    public int size()
    Specified by:
      `size` in interface `Map<K,V>`

  - ### isEmpty

    public boolean isEmpty()
    Gets the value of the `empty` property.
    Specified by:
      `isEmpty` in interface `Map<K,V>`
    Property description:
      A boolean property that is `true`, if the map is empty.
    Returns:
      the value of the `empty` property
    See Also:
      - `emptyProperty()`

  - ### containsKey

    public boolean containsKey(Object obj)
    Specified by:
      `containsKey` in interface `Map<K,V>`

  - ### containsValue

    public boolean containsValue(Object obj)
    Specified by:
      `containsValue` in interface `Map<K,V>`

  - ### put

    public V put(K key, V value)
    Specified by:
      `put` in interface `Map<K,V>`

  - ### remove

    public V remove(Object obj)
    Specified by:
      `remove` in interface `Map<K,V>`

  - ### putAll

    public void putAll(Map<? extends K, ? extends V> elements)
    Specified by:
      `putAll` in interface `Map<K,V>`

  - ### clear

    public void clear()
    Specified by:
      `clear` in interface `Map<K,V>`

  - ### keySet

    public Set<K> keySet()
    Specified by:
      `keySet` in interface `Map<K,V>`

  - ### values

    public Collection<V> values()
    Specified by:
      `values` in interface `Map<K,V>`

  - ### entrySet

    public Set<Map.Entry<K,V>> entrySet()
    Specified by:
      `entrySet` in interface `Map<K,V>`

  - ### get

    public V get(Object key)
    Specified by:
      `get` in interface `Map<K,V>`