Class IntDict


  • public class IntDict
    extends Object
    A simple class to use a String as a lookup for an int value.
    See Also:
    FloatDict, StringDict
    • Field Detail

      • count

        protected int count
        Number of elements in the table
      • keys

        protected String[] keys
      • values

        protected int[] values
    • Constructor Detail

      • IntDict

        public IntDict()
      • IntDict

        public IntDict​(int length)
        Create a new lookup with a specific size. This is more efficient than not specifying a size. Use it when you know the rough size of the thing you're creating.
      • IntDict

        public IntDict​(BufferedReader reader)
        Read a set of entries from a Reader that has each key/value pair on a single line, separated by a tab.
      • IntDict

        public IntDict​(String[] keys,
                       int[] values)
      • IntDict

        public IntDict​(Object[][] pairs)
        Constructor to allow (more intuitive) inline initialization, e.g.:
         new FloatDict(new Object[][] {
           { "key1", 1 },
           { "key2", 2 }
         });
         
    • Method Detail

      • size

        public int size()
        Returns the number of key/value pairs
      • resize

        public void resize​(int length)
        Resize the internal data, this can only be used to shrink the list. Helpful for situations like sorting and then grabbing the top 50 entries.
      • clear

        public void clear()
        Remove all entries.
      • key

        public String key​(int index)
      • crop

        protected void crop()
      • keyArray

        public String[] keyArray()
        Return a copy of the internal keys array. This array can be modified.
      • keyArray

        public String[] keyArray​(String[] outgoing)
      • value

        public int value​(int index)
      • valueArray

        public int[] valueArray()
        Create a new array and copy each of the values into it.
      • valueArray

        public int[] valueArray​(int[] array)
        Fill an already-allocated array with the values (more efficient than creating a new array each time). If 'array' is null, or not the same size as the number of values, a new array will be allocated and returned.
        Parameters:
        array - values to copy into the array
      • get

        public int get​(String key)
        Return a value for the specified key.
      • get

        public int get​(String key,
                       int alternate)
      • set

        public void set​(String key,
                        int amount)
        Create a new key/value pair or change the value of one.
      • setIndex

        public void setIndex​(int index,
                             String key,
                             int value)
      • hasKey

        public boolean hasKey​(String key)
      • increment

        public void increment​(String key)
        Increase the value associated with a specific key by 1.
      • increment

        public void increment​(IntDict dict)
        Merge another dictionary into this one. Calling this increment() since it doesn't make sense in practice for the other dictionary types, even though it's technically an add().
      • add

        public void add​(String key,
                        int amount)
      • sub

        public void sub​(String key,
                        int amount)
      • mult

        public void mult​(String key,
                         int amount)
      • div

        public void div​(String key,
                        int amount)
      • minIndex

        public int minIndex()
      • minKey

        public String minKey()
      • minValue

        public int minValue()
      • maxIndex

        public int maxIndex()
      • maxKey

        public String maxKey()
        return the key corresponding to the maximum value or null if no entries
      • maxValue

        public int maxValue()
      • sum

        public int sum()
      • sumLong

        public long sumLong()
      • index

        public int index​(String what)
      • create

        protected void create​(String what,
                              int much)
      • remove

        public int remove​(String key)
      • removeIndex

        public int removeIndex​(int index)
      • swap

        public void swap​(int a,
                         int b)
      • sortKeys

        public void sortKeys()
        Sort the keys alphabetically (ignoring case). Uses the value as a tie-breaker (only really possible with a key that has a case change).
      • sortKeysReverse

        public void sortKeysReverse()
        Sort the keys alphabetically in reverse (ignoring case). Uses the value as a tie-breaker (only really possible with a key that has a case change).
      • sortValues

        public void sortValues()
        Sort by values in ascending order. The smallest value will be at [0].
      • sortValues

        public void sortValues​(boolean stable)
        Set true to ensure that the order returned is identical. Slightly slower because the tie-breaker for identical values compares the keys.
        Parameters:
        stable -
      • sortValuesReverse

        public void sortValuesReverse()
        Sort by values in descending order. The largest value will be at [0].
      • sortValuesReverse

        public void sortValuesReverse​(boolean stable)
      • sortImpl

        protected void sortImpl​(boolean useKeys,
                                boolean reverse,
                                boolean stable)
      • getPercent

        public FloatDict getPercent()
        Sum all of the values in this dictionary, then return a new FloatDict of each key, divided by the total sum. The total for all values will be ~1.0.
        Returns:
        an IntDict with the original keys, mapped to their pct of the total
      • copy

        public IntDict copy()
        Returns a duplicate copy of this object.
      • print

        public void print()
      • save

        public void save​(File file)
        Save tab-delimited entries to a file (TSV format, UTF-8 encoding)
      • write

        public void write​(PrintWriter writer)
        Write tab-delimited entries to a PrintWriter
      • toJSON

        public String toJSON()
        Return this dictionary as a String in JSON format.