# Package net.sf.saxon.ma.map

This package implements maps, as introduced in XSLT 3.0 and XQuery 3.1: maps provide a dictionary-like data structure.

Maps are immutable, so that adding a new entry to a map creates a new map.

The entries in a map are (Key, Value) pairs. The key is always an atomic value; the value may be any XPath sequence.

There are functions (each supported by its own implementation class) to create a new map, to add an entry to a map, to get an entry from a map, and to list all the keys that are present in a map.

- Interface Summary
  Interface | Description
  --- | ---
  MapItem | Interface supported by different implementations of an XDM map item
  TupleType | An instance of this class represents a specific tuple item type, for example tuple(x as xs:double, y as element(employee)).

- Class Summary
  Class | Description
  --- | ---
  DictionaryMap | A simple implementation of MapItem where the strings are keys, and modification is unlikely.
  HashTrieMap | An immutable map.
  KeyValuePair | A key and a corresponding value to be held in a Map.
  MapCreate | This is a variant of the map:new() or map:merge() function which differs in that duplicate keys are considered an error.
  MapFunctionSet | Function signatures (and pointers to implementations) of the functions defined in XPath 2.0
  MapFunctionSet.MapContains | Implementation of the XPath 3.1 function map:contains(Map, key) => boolean
  MapFunctionSet.MapEntry | Implementation of the extension function map:entry(key, value) => Map
  MapFunctionSet.MapFind | Implementation of the XPath 3.1 function map:find(item()*, key) => array
  MapFunctionSet.MapForEach | Implementation of the extension function map:for-each(Map, Function) => item()*
  MapFunctionSet.MapGet | Implementation of the XPath 3.1 function map:get(Map, key) => value
  MapFunctionSet.MapKeys | Implementation of the extension function map:keys(Map) => atomicValue*
  MapFunctionSet.MapMerge | Implementation of the extension function map:merge() => Map From 9.8, map:merge is also used to implement map constructors in XPath and the xsl:map instruction in XSLT.
  MapFunctionSet.MapPut | Implementation of the extension function map:put() => Map
  MapFunctionSet.MapRemove | Implementation of the XPath 3.1 function map:remove(Map, key) => value
  MapFunctionSet.MapSize | Implementation of the extension function map:size(map) => integer
  MapType | An instance of this class represents a specific map item type, for example map(x:integer, element(employee))
  MapUntypedContains | Implementation of an internal function map:untyped-contains(Map, key) => boolean, which is like map:contains except that if the supplied key is untyped atomic, it is converted to all the possible types present in the map and returns true if the key after conversion is present.
  RangeKey | This class implements an XPath map item as a view of an XSLT key index.
  SingleEntryMap | A key and a corresponding value to be held in a Map.
  TupleItemType | An instance of this class represents a specific tuple item type, for example tuple(x as xs:double, y as element(employee)).