Class IntDict

java.lang.Object
processing.data.IntDict

public class IntDict extends Object
A simple class to use a String as a lookup for an int value. String "keys" are associated with integer values.
See Also:
  • Constructor Details

    • 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 Details

    • 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 from the data structure.
    • entries

      public Iterable<IntDict.Entry> entries()
    • entryIterator

      public Iterator<IntDict.Entry> entryIterator()
    • key

      public String key(int index)
    • keys

      public Iterable<String> keys()
      Return the internal array being used to store the keys.
    • keyIterator

      public Iterator<String> keyIterator()
    • keyArray

      public String[] keyArray()
      Return a copy of the internal keys array. In contrast to the keys() method, this array can be modified.
    • keyArray

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

      public int value(int index)
    • values

      public Iterable<Integer> values()
      Return the internal array being used to store the values.
    • valueIterator

      public Iterator<Integer> valueIterator()
    • valueArray

      public int[] valueArray()
      The version of this method without a parameter creates a new array and copies each of the values into it. The version with the int[] parameters fills 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.
    • 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)
      Check if a key is a part of the data structure.
    • increment

      public void increment(String key)
      Increase the value of a specific key value 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)
      Add to a value. If the key does not exist, an new pair is initialized with the value supplied.
    • sub

      public void sub(String key, int amount)
      Subtract from a value.
    • mult

      public void mult(String key, int amount)
      Multiply a value.
    • div

      public void div(String key, int amount)
      Divide a value.
    • 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)
    • remove

      public int remove(String key)
      Remove a key/value pair.
    • 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)
    • 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.
    • toString

      public String toString()
      Overrides:
      toString in class Object