Package net.sf.saxon.ma.map
Class HashTrieMap
- java.lang.Object
-
- net.sf.saxon.ma.map.MapItem
-
- net.sf.saxon.ma.map.HashTrieMap
-
- All Implemented Interfaces:
Callable
,FunctionItem
,GroundedValue
,Item
,Sequence
public class HashTrieMap extends MapItem
An immutable map. This implementation, which uses a hash trie, was introduced in Saxon 9.6
-
-
Constructor Summary
Constructors Constructor Description HashTrieMap()
Create an empty mapHashTrieMap(ImmutableMap<AtomicMatchKey,KeyValuePair> imap)
Create a map whose contents are a copy of an existing immutable map
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description HashTrieMap
addEntry(AtomicValue key, GroundedValue value)
Create a new map containing the existing entries in the map plus an additional entry, without modifying the original.boolean
conforms(PlainType requiredKeyType, SequenceType requiredValueType, TypeHierarchy th)
Ask whether the map conforms to a given map typestatic HashTrieMap
copy(MapItem map)
Create a map whose entries are copies of the entries in an existing MapItemvoid
diagnosticDump()
GroundedValue
get(AtomicValue key)
Get an entry from the MapMapType
getItemType(TypeHierarchy th)
Get the type of the map.UType
getKeyUType()
Get the lowest common item type of the keys in the mapKeyValuePair
getKeyValuePair(AtomicValue key)
Get an key/value pair from the Mapboolean
initialPut(AtomicValue key, GroundedValue value)
Add a new entry to this map.boolean
isEmpty()
Ask whether the map is emptyAtomicIterator
keys()
Get the set of all key values in the mapjava.lang.Iterable<KeyValuePair>
keyValuePairs()
Get the set of all key-value pairs in the mapHashTrieMap
remove(AtomicValue key)
Remove an entry from the mapstatic HashTrieMap
singleton(AtomicValue key, GroundedValue value)
Create a singleton map with a single key and valueint
size()
Get the size of the mapjava.lang.String
toString()
-
Methods inherited from class net.sf.saxon.ma.map.MapItem
atomize, call, deepEqual40, deepEquals, effectiveBooleanValue, entries, export, getAnnotations, getArity, getDescription, getFunctionItemType, getFunctionName, getGenre, getItemTypeOfSequence, getOperandRoles, getTypedValue, getUnicodeStringValue, isArray, isKnownToConform, isMap, isTrustedResultType, itemAt, makeNewContext, mapToString, toShortString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sf.saxon.om.FunctionItem
isSequenceVariadic
-
Methods inherited from interface net.sf.saxon.om.GroundedValue
asIterable, concatenate, containsNode, materialize
-
Methods inherited from interface net.sf.saxon.om.Item
getLength, getStringValue, head, isStreamed, iterate, reduce, subsequence
-
Methods inherited from interface net.sf.saxon.om.Sequence
makeRepeatable
-
-
-
-
Constructor Detail
-
HashTrieMap
public HashTrieMap()
Create an empty map
-
HashTrieMap
public HashTrieMap(ImmutableMap<AtomicMatchKey,KeyValuePair> imap)
Create a map whose contents are a copy of an existing immutable map- Parameters:
imap
- the map to be copied
-
-
Method Detail
-
singleton
public static HashTrieMap singleton(AtomicValue key, GroundedValue value)
Create a singleton map with a single key and value- Parameters:
key
- the key valuevalue
- the associated value- Returns:
- a singleton map
-
copy
public static HashTrieMap copy(MapItem map)
Create a map whose entries are copies of the entries in an existing MapItem- Parameters:
map
- the existing map to be copied- Returns:
- the new map
-
size
public int size()
Get the size of the map
-
isEmpty
public boolean isEmpty()
Ask whether the map is empty
-
conforms
public boolean conforms(PlainType requiredKeyType, SequenceType requiredValueType, TypeHierarchy th)
Ask whether the map conforms to a given map type
-
getItemType
public MapType getItemType(TypeHierarchy th)
Get the type of the map. This method is used largely for diagnostics, to report the type of a map when it differs from the required type. This method has the side-effect of updating the internal type information held within the map.- Specified by:
getItemType
in classMapItem
- Parameters:
th
- The type hierarchy cache for the configuration- Returns:
- the type of this map
-
getKeyUType
public UType getKeyUType()
Get the lowest common item type of the keys in the map- Specified by:
getKeyUType
in classMapItem
- Returns:
- the most specific type to which all the keys belong. If the map is empty, return UType.VOID (the type with no instances)
-
addEntry
public HashTrieMap addEntry(AtomicValue key, GroundedValue value)
Create a new map containing the existing entries in the map plus an additional entry, without modifying the original. If there is already an entry with the specified key, this entry is replaced by the new entry.
-
initialPut
public boolean initialPut(AtomicValue key, GroundedValue value)
Add a new entry to this map. Since the map is supposed to be immutable, this method must only be called while initially populating the map, and must not be called if anyone else might already be using the map.- Parameters:
key
- the key of the new entry. Any existing entry with this key is replaced.value
- the value associated with the new entry- Returns:
- true if an existing entry with the same key was replaced
-
remove
public HashTrieMap remove(AtomicValue key)
Remove an entry from the map
-
get
public GroundedValue get(AtomicValue key)
Get an entry from the Map
-
getKeyValuePair
public KeyValuePair getKeyValuePair(AtomicValue key)
Get an key/value pair from the Map- Parameters:
key
- the value of the key- Returns:
- the key-value-pair associated with the given key, or null if the key is not present in the map
-
keys
public AtomicIterator keys()
Get the set of all key values in the map
-
keyValuePairs
public java.lang.Iterable<KeyValuePair> keyValuePairs()
Get the set of all key-value pairs in the map- Specified by:
keyValuePairs
in classMapItem
- Returns:
- an iterator over the key-value pairs
-
diagnosticDump
public void diagnosticDump()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-