Class StringDict


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

      • count

        protected int count
        Number of elements in the table
      • keys

        protected String[] keys
      • values

        protected String[] values
    • Constructor Detail

      • StringDict

        public StringDict()
      • StringDict

        public StringDict​(int length)
        Create a new lookup pre-allocated to a specific length. This will not change the size(), but is more efficient than not specifying a length. Use it when you know the rough size of the thing you're creating.
      • StringDict

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

        public StringDict​(String[] keys,
                          String[] values)
      • StringDict

        public StringDict​(String[][] pairs)
        Constructor to allow (more intuitive) inline initialization, e.g.:
         new StringDict(new String[][] {
           { "key1", "value1" },
           { "key2", "value2" }
         });
         
        It's no Python, but beats a static { } block with HashMap.put() statements.
      • StringDict

        public StringDict​(TableRow row)
        Create a dictionary that maps between column titles and cell entries in a TableRow. If two columns have the same name, the later column's values will override the earlier values.
    • Method Detail

      • size

        public int size()
      • 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 String value​(int index)
      • valueArray

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

        public String[] valueArray​(String[] 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.
      • get

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

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

        public int index​(String what)
      • hasKey

        public boolean hasKey​(String key)
      • create

        protected void create​(String key,
                              String value)
      • removeIndex

        public String 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()
      • sortValues

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

        public void sortValuesReverse()
      • sortImpl

        protected void sortImpl​(boolean useKeys,
                                boolean reverse)
      • copy

        public StringDict 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.