Class HxmMap

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.lang.Iterable<HxmMap.Entry>

    public class HxmMap
    extends java.lang.Object
    implements java.lang.Iterable<HxmMap.Entry>, java.lang.AutoCloseable
    An HxmMap is a data structure mapping keys to values. A map is both an associative table and an array. Setting a value to an existing key will overwrite any value previously set for that key. When used as an array-like structure, adding a new unkeyed element to an HxmMap with addValue(HxmValue) automatically assigns an integer key to the element equal to the largest integer key already present plus one, or zero if no integer key exists. Most of the functions below exist in multiple versions: Values and keys can be manipulated through their native type (like int, double, String, HxmMap, HxmFunction...) or manipulated with an HxmValue which is a container that can hold any type of value. Using the native type is more convenient and results in less overhead most of the time. HxmValue should only be used when you don't know the type of the manipulated value. The iterators returned by the method iterator() follow the fail-fast convention: if the map is structurally modified after the creation of an iterator (by using the methods add, set, unset or clear), the iterator will throw an exception. In other words, you can't modify a map while you are iterating over it.
    Since:
    10.0
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  HxmMap.Entry
      An HxmMap entry (key, value) pair.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addBool​(boolean value)
      Adds the given boolean value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addDouble​(double value)
      Adds the given double value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addExpression​(HxExpression expr)
      Adds the given HxExpression to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addFunction​(HxmFunction function)
      Adds the given HxmFunction to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addInt​(long value)
      Adds the given integer value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addMap​(HxmMap map)
      Adds the given HxmMap to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addModule​(HxmModule module)
      Adds the given HxmModule to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addString​(java.lang.String str)
      Adds the given String value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      void addValue​(HxmValue value)
      Adds the given value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
      HxmValue asValue()
      Returns the map as an HxmValue.
      void clear()
      Erases all elements from the map.
      void close()
      Releases the reference.
      long count()
      Returns the number of elements in the map.
      boolean equals​(java.lang.Object obj)  
      boolean getBool​(long key)
      Returns the boolean value associated with the given key.
      boolean getBool​(HxmValue key)
      Returns the boolean value associated with the given key.
      boolean getBool​(java.lang.String key)
      Returns the boolean value associated with the given key.
      double getDouble​(long key)
      Returns the double value associated with the given key.
      double getDouble​(HxmValue key)
      Returns the double value associated with the given key.
      double getDouble​(java.lang.String key)
      Returns the double value associated with the given key.
      HxExpression getExpression​(long key)
      Returns the HxExpression associated with the given key.
      HxExpression getExpression​(HxmValue key)
      Returns the HxExpression associated with the given key.
      HxExpression getExpression​(java.lang.String key)
      Returns the HxExpression associated with the given key.
      HxmFunction getFunction​(long key)
      Returns the HxmFunction associated with the given key.
      HxmFunction getFunction​(HxmValue key)
      Returns the HxmFunction associated with the given key.
      HxmFunction getFunction​(java.lang.String key)
      Returns the HxmFunction associated with the given key.
      long getInt​(long key)
      Returns the integer value associated with the given key.
      long getInt​(HxmValue key)
      Returns the integer value associated with the given key.
      long getInt​(java.lang.String key)
      Returns the integer value associated with the given key.
      HxmMap getMap​(long key)
      Returns the HxmMap associated with the given key.
      HxmMap getMap​(HxmValue key)
      Returns the HxmMap associated with the given key.
      HxmMap getMap​(java.lang.String key)
      Returns the HxmMap associated with the given key.
      HxmModule getModule​(long key)
      Returns the HxmModule associated with the given key.
      HxmModule getModule​(HxmValue key)
      Returns the HxmModule associated with the given key.
      HxmModule getModule​(java.lang.String key)
      Returns the HxmModule associated with the given key.
      java.lang.String getString​(long key)
      Returns the String value associated with the given key.
      java.lang.String getString​(HxmValue key)
      Returns the String value associated with the given key.
      java.lang.String getString​(java.lang.String key)
      Returns the String value associated with the given key.
      HxmValue getValue​(long key)
      Returns the value associated with the given key as an HxmValue.
      HxmValue getValue​(HxmValue key)
      Returns the value associated with the given key as an HxmValue.
      HxmValue getValue​(java.lang.String key)
      Returns the value associated with the given key as an HxmValue.
      int hashCode()  
      boolean isDefined​(int key)
      Returns true if the given key is defined in the map.
      boolean isDefined​(HxmValue key)
      Returns true if the given key is defined in the map.
      boolean isDefined​(java.lang.String key)
      Returns true if the given key is defined in the map.
      java.util.Iterator<HxmMap.Entry> iterator()
      Returns a read-only iterator over the contents of this map.
      void setBool​(long key, boolean value)
      Associates the boolean value to the given key in the map.
      void setBool​(HxmValue key, boolean value)
      Associates the boolean value to the given key in the map.
      void setBool​(java.lang.String key, boolean value)
      Associates the boolean value to the given key in the map.
      void setDouble​(long key, double value)
      Associates the double value to the given key in the map.
      void setDouble​(HxmValue key, double value)
      Associates the double value to the given key in the map.
      void setDouble​(java.lang.String key, double value)
      Associates the double value to the given key in the map.
      void setExpression​(long key, HxExpression expr)
      Associates the HxExpression to the given key in the map.
      void setExpression​(HxmValue key, HxExpression expr)
      Associates the HxExpression to the given key in the map.
      void setExpression​(java.lang.String key, HxExpression expr)
      Associates the HxExpression to the given key in the map.
      void setFunction​(long key, HxmFunction function)
      Associates the HxmFunction to the given key in the map.
      void setFunction​(HxmValue key, HxmFunction function)
      Associates the HxmFunction to the given key in the map.
      void setFunction​(java.lang.String key, HxmFunction function)
      Associates the HxmFunction to the given key in the map.
      void setInt​(long key, long value)
      Associates the integer value to the given key in the map.
      void setInt​(HxmValue key, long value)
      Associates the integer value to the given key in the map.
      void setInt​(java.lang.String key, long value)
      Associates the integer value to the given key in the map.
      void setMap​(long key, HxmMap map)
      Associates the HxmMap to the given key in the map.
      void setMap​(HxmValue key, HxmMap map)
      Associates the HxmMap to the given key in the map.
      void setMap​(java.lang.String key, HxmMap map)
      Associates the HxmMap to the given key in the map.
      void setModule​(long key, HxmModule module)
      Associates the HxmModule to the given key in the map.
      void setModule​(HxmValue key, HxmModule module)
      Associates the HxmModule to the given key in the map.
      void setModule​(java.lang.String key, HxmModule module)
      Associates the HxmModule to the given key in the map.
      void setString​(long key, java.lang.String str)
      Associates the String value to the given key in the map.
      void setString​(HxmValue key, java.lang.String str)
      Associates the String value to the given key in the map.
      void setString​(java.lang.String key, java.lang.String str)
      Associates the String value to the given key in the map.
      void setValue​(long key, HxmValue value)
      Associates the HxmValue to the given key.
      void setValue​(HxmValue key, HxmValue value)
      Associates the HxmValue to the given key in the map.
      void setValue​(java.lang.String key, HxmValue value)
      Associates the HxmValue to the given key in the map.
      void unset​(long key)
      Unsets the given key in the map if present.
      void unset​(HxmValue key)
      Unsets the given key in the map if present.
      void unset​(java.lang.String key)
      Unsets the given key in the map if present.
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Method Detail

      • close

        public void close()

        Releases the reference. If this map was already released, returns immediately and does nothing. Invoking any method on this object after this operation will throw an exception.

        Note: Releasing a reference does not necessarily imply that the underlying map object is destroyed. It is only destroyed if no more references point to it.

        Specified by:
        close in interface java.lang.AutoCloseable
        Since:
        11.5
      • count

        public long count()
        Returns the number of elements in the map.
      • clear

        public void clear()
        Erases all elements from the map. After this call, count() returns zero.
      • addValue

        public void addValue​(HxmValue value)
        Adds the given value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        value - Value to add in the map.
      • addInt

        public void addInt​(long value)
        Adds the given integer value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        value - Integer value to add in the map.
      • addDouble

        public void addDouble​(double value)
        Adds the given double value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        value - Double value to add in the map.
      • addBool

        public void addBool​(boolean value)
        Adds the given boolean value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        value - Boolean value to add in the map.
      • addExpression

        public void addExpression​(HxExpression expr)
        Adds the given HxExpression to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        expr - HxExpression to add in the map.
      • addMap

        public void addMap​(HxmMap map)
        Adds the given HxmMap to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        map - Map to add in the map.
      • addModule

        public void addModule​(HxmModule module)
        Adds the given HxmModule to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        module - Module to add in the map.
      • addString

        public void addString​(java.lang.String str)
        Adds the given String value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        str - String value to add in the map.
      • addFunction

        public void addFunction​(HxmFunction function)
        Adds the given HxmFunction to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.
        Parameters:
        function - Function to add in the map.
      • getValue

        public HxmValue getValue​(java.lang.String key)
        Returns the value associated with the given key as an HxmValue. If no value is associated with the key, an HxmValue representing nil is returned.
        Parameters:
        key - String key
        Returns:
        HxmValue associated with the key.
      • getInt

        public long getInt​(java.lang.String key)
        Returns the integer value associated with the given key. The value must exist and must be an integer.
        Parameters:
        key - String key.
        Returns:
        Integer value associated with the key.
      • getDouble

        public double getDouble​(java.lang.String key)
        Returns the double value associated with the given key. The value must exist and must be a double.
        Parameters:
        key - String key.
        Returns:
        Double value associated with the key.
      • getBool

        public boolean getBool​(java.lang.String key)
        Returns the boolean value associated with the given key. The value must exist and must be a boolean.
        Parameters:
        key - String key.
        Returns:
        Boolean value associated with the key.
      • getString

        public java.lang.String getString​(java.lang.String key)
        Returns the String value associated with the given key. The value must exist and must be a String.
        Parameters:
        key - String key.
        Returns:
        String value associated with the key.
      • getModule

        public HxmModule getModule​(java.lang.String key)
        Returns the HxmModule associated with the given key. The value must exist and must be a module.
        Parameters:
        key - String key.
        Returns:
        Module associated with the key.
      • getFunction

        public HxmFunction getFunction​(java.lang.String key)
        Returns the HxmFunction associated with the given key. The value must exist and must be a function.
        Parameters:
        key - String key.
        Returns:
        Function associated with the key.
      • getMap

        public HxmMap getMap​(java.lang.String key)
        Returns the HxmMap associated with the given key. The value must exist and must be a map.
        Parameters:
        key - String key.
        Returns:
        Map associated with the key.
      • getExpression

        public HxExpression getExpression​(java.lang.String key)
        Returns the HxExpression associated with the given key. The value must exist and must be an expression.
        Parameters:
        key - String key.
        Returns:
        Expression associated with the key.
      • setValue

        public void setValue​(java.lang.String key,
                             HxmValue value)
        Associates the HxmValue to the given key in the map. If the value is nil, this has the same effect as unset(java.lang.String). If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        value - HxmValue to set.
      • setInt

        public void setInt​(java.lang.String key,
                           long value)
        Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        value - Integer value to set.
      • setDouble

        public void setDouble​(java.lang.String key,
                              double value)
        Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        value - Double value to set.
      • setBool

        public void setBool​(java.lang.String key,
                            boolean value)
        Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        value - Boolean value to set.
      • setString

        public void setString​(java.lang.String key,
                              java.lang.String str)
        Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        str - String value to set.
      • setModule

        public void setModule​(java.lang.String key,
                              HxmModule module)
        Associates the HxmModule to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        module - Module to set.
      • setFunction

        public void setFunction​(java.lang.String key,
                                HxmFunction function)
        Associates the HxmFunction to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        function - Function to set.
      • setMap

        public void setMap​(java.lang.String key,
                           HxmMap map)
        Associates the HxmMap to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        map - Map to set.
      • setExpression

        public void setExpression​(java.lang.String key,
                                  HxExpression expr)
        Associates the HxExpression to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - String key.
        expr - Expression to set.
      • getValue

        public HxmValue getValue​(long key)
        Returns the value associated with the given key as an HxmValue. If no value is associated with the key, an HxmValue representing nil is returned.
        Parameters:
        key - Integer key
        Returns:
        HxmValue associated with the key.
      • getInt

        public long getInt​(long key)
        Returns the integer value associated with the given key. The value must exist and must be an integer.
        Parameters:
        key - Integer key.
        Returns:
        Integer value associated with the key.
      • getDouble

        public double getDouble​(long key)
        Returns the double value associated with the given key. The value must exist and must be a double.
        Parameters:
        key - Integer key.
        Returns:
        Double value associated with the key.
      • getBool

        public boolean getBool​(long key)
        Returns the boolean value associated with the given key. The value must exist and must be a boolean.
        Parameters:
        key - Integer key.
        Returns:
        Boolean value associated with the key.
      • getString

        public java.lang.String getString​(long key)
        Returns the String value associated with the given key. The value must exist and must be a String.
        Parameters:
        key - Integer key.
        Returns:
        String value associated with the key.
      • getModule

        public HxmModule getModule​(long key)
        Returns the HxmModule associated with the given key. The value must exist and must be a module.
        Parameters:
        key - Integer key.
        Returns:
        Module associated with the key.
      • getFunction

        public HxmFunction getFunction​(long key)
        Returns the HxmFunction associated with the given key. The value must exist and must be a function.
        Parameters:
        key - Integer key.
        Returns:
        Function associated with the key.
      • getMap

        public HxmMap getMap​(long key)
        Returns the HxmMap associated with the given key. The value must exist and must be a map.
        Parameters:
        key - Integer key.
        Returns:
        Map associated with the key.
      • getExpression

        public HxExpression getExpression​(long key)
        Returns the HxExpression associated with the given key. The value must exist and must be an expression.
        Parameters:
        key - Integer key.
        Returns:
        Expression associated with the key.
      • setValue

        public void setValue​(long key,
                             HxmValue value)
        Associates the HxmValue to the given key. If the HxmValue is nil, this has the same effect as unset(java.lang.String). If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        value - HxmValue to set.
      • setInt

        public void setInt​(long key,
                           long value)
        Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        value - Integer value to set.
      • setDouble

        public void setDouble​(long key,
                              double value)
        Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        value - Double value to set.
      • setBool

        public void setBool​(long key,
                            boolean value)
        Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        value - Boolean value to set.
      • setString

        public void setString​(long key,
                              java.lang.String str)
        Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        str - String value to set.
      • setModule

        public void setModule​(long key,
                              HxmModule module)
        Associates the HxmModule to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        module - Module to set.
      • setFunction

        public void setFunction​(long key,
                                HxmFunction function)
        Associates the HxmFunction to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        function - Function to set.
      • setMap

        public void setMap​(long key,
                           HxmMap map)
        Associates the HxmMap to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        map - Map to set.
      • setExpression

        public void setExpression​(long key,
                                  HxExpression expr)
        Associates the HxExpression to the given key in the map. If the map already contained an association for the key, the previous value is replaced.
        Parameters:
        key - Integer key.
        expr - Expression to set.
      • getValue

        public HxmValue getValue​(HxmValue key)
        Returns the value associated with the given key as an HxmValue. If no value is associated with the key, an HxmValue representing nil is returned.
        Parameters:
        key - HxmValue key
        Returns:
        Value associated with the key.
      • getInt

        public long getInt​(HxmValue key)
        Returns the integer value associated with the given key. The value must exist and must be an integer.
        Parameters:
        key - HxmValue key.
        Returns:
        Integer value associated with the key.
      • getDouble

        public double getDouble​(HxmValue key)
        Returns the double value associated with the given key. The value must exist and must be a double.
        Parameters:
        key - HxmValue key.
        Returns:
        Double value associated with the key.
      • getBool

        public boolean getBool​(HxmValue key)
        Returns the boolean value associated with the given key. The value must exist and must be a boolean.
        Parameters:
        key - HxmValue key.
        Returns:
        Boolean value associated with the key.
      • getString

        public java.lang.String getString​(HxmValue key)
        Returns the String value associated with the given key. The value must exist and must be a String.
        Parameters:
        key - HxmValue key.
        Returns:
        String value associated with the key.
      • getModule

        public HxmModule getModule​(HxmValue key)
        Returns the HxmModule associated with the given key. The value must exist and must be a module.
        Parameters:
        key - HxmValue key.
        Returns:
        Module associated with the key.
      • getFunction

        public HxmFunction getFunction​(HxmValue key)
        Returns the HxmFunction associated with the given key. The value must exist and must be a function.
        Parameters:
        key - HxmValue key.
        Returns:
        Function associated with the key.
      • getMap

        public HxmMap getMap​(HxmValue key)
        Returns the HxmMap associated with the given key. The value must exist and must be a map.
        Parameters:
        key - HxmValue key.
        Returns:
        Map associated with the key.
      • getExpression

        public HxExpression getExpression​(HxmValue key)
        Returns the HxExpression associated with the given key. The value must exist and must be an expression.
        Parameters:
        key - HxmValue key.
        Returns:
        Expression associated with the key.
      • setValue

        public void setValue​(HxmValue key,
                             HxmValue value)
        Associates the HxmValue to the given key in the map. If the HxmValue is nil, this has the same effect as unset(java.lang.String). If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        value - HxmValue to set.
      • setInt

        public void setInt​(HxmValue key,
                           long value)
        Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        value - Integer value to set.
      • setDouble

        public void setDouble​(HxmValue key,
                              double value)
        Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        value - Double value to set.
      • setBool

        public void setBool​(HxmValue key,
                            boolean value)
        Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        value - Boolean value to set.
      • setString

        public void setString​(HxmValue key,
                              java.lang.String str)
        Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        str - String value to set.
      • setModule

        public void setModule​(HxmValue key,
                              HxmModule module)
        Associates the HxmModule to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        module - Module to set.
      • setFunction

        public void setFunction​(HxmValue key,
                                HxmFunction function)
        Associates the HxmFunction to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        function - Function to set.
      • setMap

        public void setMap​(HxmValue key,
                           HxmMap map)
        Associates the HxmMap to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        map - Map to set.
      • setExpression

        public void setExpression​(HxmValue key,
                                  HxExpression expr)
        Associates the HxExpression to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.
        Parameters:
        key - HxmValue key.
        expr - Expression to set.
      • unset

        public void unset​(java.lang.String key)
        Unsets the given key in the map if present. If the key doesn't exist in the map do nothing.
        Parameters:
        key - String key.
      • unset

        public void unset​(long key)
        Unsets the given key in the map if present. If the key doesn't exist in the map do nothing.
        Parameters:
        key - Integer key.
      • unset

        public void unset​(HxmValue key)
        Unsets the given key in the map if present. If the key doesn't exist in the map do nothing. The key must not be nil.
        Parameters:
        key - HxmValue key.
      • isDefined

        public boolean isDefined​(java.lang.String key)
        Returns true if the given key is defined in the map.
        Parameters:
        key - String key.
      • isDefined

        public boolean isDefined​(int key)
        Returns true if the given key is defined in the map.
        Parameters:
        key - Integer key.
      • isDefined

        public boolean isDefined​(HxmValue key)
        Returns true if the given key is defined in the map.
        Parameters:
        key - HxmValue key.
      • iterator

        public java.util.Iterator<HxmMap.Entry> iterator()
        Returns a read-only iterator over the contents of this map. The optional remove() operation is not supported.
        Specified by:
        iterator in interface java.lang.Iterable<HxmMap.Entry>
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object