Class DefaultKeyedValues<K extends java.lang.Comparable<K>>

  • Type Parameters:
    K - the key type (String is a good default).
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, PublicCloneable, KeyedValues<K>, Values

    public class DefaultKeyedValues<K extends java.lang.Comparable<K>>
    extends java.lang.Object
    implements KeyedValues<K>, java.lang.Cloneable, PublicCloneable, java.io.Serializable
    An ordered list of (key, value) items. This class provides a default implementation of the KeyedValues interface.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<K,​java.lang.Integer> indexMap
      Contains (key, Integer) mappings, where the Integer is the index for the key in the list.
      private java.util.List<K> keys
      Storage for the keys.
      private static long serialVersionUID
      For serialization.
      private java.util.List<java.lang.Number> values
      Storage for the values.
    • Constructor Summary

      Constructors 
      Constructor Description
      DefaultKeyedValues()
      Creates a new collection (initially empty).
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addValue​(K key, double value)
      Updates an existing value, or adds a new value to the collection.
      void addValue​(K key, java.lang.Number value)
      Adds a new value to the collection, or updates an existing value.
      void clear()
      Clears all values from the collection.
      java.lang.Object clone()
      Returns a clone.
      boolean equals​(java.lang.Object obj)
      Tests if this object is equal to another.
      int getIndex​(K key)
      Returns the index for a given key.
      int getItemCount()
      Returns the number of items (values) in the collection.
      K getKey​(int index)
      Returns a key.
      java.util.List<K> getKeys()
      Returns the keys for the values in the collection.
      java.lang.Number getValue​(int item)
      Returns a value.
      java.lang.Number getValue​(K key)
      Returns the value for a given key.
      int hashCode()
      Returns a hash code.
      void insertValue​(int position, K key, double value)
      Inserts a new value at the specified position in the dataset or, if there is an existing item with the specified key, updates the value for that item and moves it to the specified position.
      void insertValue​(int position, K key, java.lang.Number value)
      Inserts a new value at the specified position in the dataset or, if there is an existing item with the specified key, updates the value for that item and moves it to the specified position.
      private void rebuildIndex()
      Rebuilds the key to indexed-position mapping after an positioned insert or a remove operation.
      void removeValue​(int index)
      Removes a value from the collection.
      void removeValue​(K key)
      Removes a value from the collection.
      void setValue​(K key, double value)
      Updates an existing value, or adds a new value to the collection.
      void setValue​(K key, java.lang.Number value)
      Updates an existing value, or adds a new value to the collection.
      void sortByKeys​(SortOrder order)
      Sorts the items in the list by key.
      void sortByValues​(SortOrder order)
      Sorts the items in the list by value.
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • keys

        private java.util.List<K extends java.lang.Comparable<K>> keys
        Storage for the keys.
      • values

        private java.util.List<java.lang.Number> values
        Storage for the values.
      • indexMap

        private java.util.Map<K extends java.lang.Comparable<K>,​java.lang.Integer> indexMap
        Contains (key, Integer) mappings, where the Integer is the index for the key in the list.
    • Constructor Detail

      • DefaultKeyedValues

        public DefaultKeyedValues()
        Creates a new collection (initially empty).
    • Method Detail

      • getItemCount

        public int getItemCount()
        Returns the number of items (values) in the collection.
        Specified by:
        getItemCount in interface Values
        Returns:
        The item count.
      • getValue

        public java.lang.Number getValue​(int item)
        Returns a value.
        Specified by:
        getValue in interface Values
        Parameters:
        item - the item of interest (zero-based index).
        Returns:
        The value (possibly null).
        Throws:
        java.lang.IndexOutOfBoundsException - if item is out of bounds.
      • getKey

        public K getKey​(int index)
        Returns a key.
        Specified by:
        getKey in interface KeyedValues<K extends java.lang.Comparable<K>>
        Parameters:
        index - the item index (zero-based).
        Returns:
        The row key.
        Throws:
        java.lang.IndexOutOfBoundsException - if item is out of bounds.
      • getIndex

        public int getIndex​(K key)
        Returns the index for a given key.
        Specified by:
        getIndex in interface KeyedValues<K extends java.lang.Comparable<K>>
        Parameters:
        key - the key (null not permitted).
        Returns:
        The index, or -1 if the key is not recognised.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
      • getKeys

        public java.util.List<K> getKeys()
        Returns the keys for the values in the collection.
        Specified by:
        getKeys in interface KeyedValues<K extends java.lang.Comparable<K>>
        Returns:
        The keys (never null).
      • getValue

        public java.lang.Number getValue​(K key)
        Returns the value for a given key.
        Specified by:
        getValue in interface KeyedValues<K extends java.lang.Comparable<K>>
        Parameters:
        key - the key (null not permitted).
        Returns:
        The value (possibly null).
        Throws:
        UnknownKeyException - if the key is not recognised.
        See Also:
        getValue(int)
      • addValue

        public void addValue​(K key,
                             double value)
        Updates an existing value, or adds a new value to the collection.
        Parameters:
        key - the key (null not permitted).
        value - the value.
        See Also:
        addValue(Comparable, Number)
      • addValue

        public void addValue​(K key,
                             java.lang.Number value)
        Adds a new value to the collection, or updates an existing value. This method passes control directly to the setValue(Comparable, Number) method.
        Parameters:
        key - the key (null not permitted).
        value - the value (null permitted).
      • setValue

        public void setValue​(K key,
                             double value)
        Updates an existing value, or adds a new value to the collection.
        Parameters:
        key - the key (null not permitted).
        value - the value.
      • setValue

        public void setValue​(K key,
                             java.lang.Number value)
        Updates an existing value, or adds a new value to the collection.
        Parameters:
        key - the key (null not permitted).
        value - the value (null permitted).
      • insertValue

        public void insertValue​(int position,
                                K key,
                                double value)
        Inserts a new value at the specified position in the dataset or, if there is an existing item with the specified key, updates the value for that item and moves it to the specified position.
        Parameters:
        position - the position (in the range 0 to getItemCount()).
        key - the key (null not permitted).
        value - the value.
      • insertValue

        public void insertValue​(int position,
                                K key,
                                java.lang.Number value)
        Inserts a new value at the specified position in the dataset or, if there is an existing item with the specified key, updates the value for that item and moves it to the specified position.
        Parameters:
        position - the position (in the range 0 to getItemCount()).
        key - the key (null not permitted).
        value - the value (null permitted).
      • rebuildIndex

        private void rebuildIndex()
        Rebuilds the key to indexed-position mapping after an positioned insert or a remove operation.
      • removeValue

        public void removeValue​(int index)
        Removes a value from the collection.
        Parameters:
        index - the index of the item to remove (in the range 0 to getItemCount() -1).
        Throws:
        java.lang.IndexOutOfBoundsException - if index is not within the specified range.
      • removeValue

        public void removeValue​(K key)
        Removes a value from the collection.
        Parameters:
        key - the item key (null not permitted).
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        UnknownKeyException - if key is not recognised.
      • clear

        public void clear()
        Clears all values from the collection.
      • sortByKeys

        public void sortByKeys​(SortOrder order)
        Sorts the items in the list by key.
        Parameters:
        order - the sort order (null not permitted).
      • sortByValues

        public void sortByValues​(SortOrder order)
        Sorts the items in the list by value. If the list contains null values, they will sort to the end of the list, irrespective of the sort order.
        Parameters:
        order - the sort order (null not permitted).
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests if this object is equal to another.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object (null permitted).
        Returns:
        A boolean.
      • hashCode

        public int hashCode()
        Returns a hash code.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        A hash code.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone.
        Specified by:
        clone in interface PublicCloneable
        Overrides:
        clone in class java.lang.Object
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - this class will not throw this exception, but subclasses might.