You can take a picture of the Guava library (former Google collections). It has Multimaps implementations that can store multiple values for a single key.
For example, ListMultimap implementations allow you to duplicate key / value pairs that are stored in numerical order.
Here's how you use it:
ListMultimap<String, Integer> numberClasses = ArrayListMultimap.create(); numberClasses.put("odd", 1); numberClasses.put("odd", 3); numberClasses.put("odd", 5); numberClasses.put("even", 2); numberClasses.put("even", 4); numberClasses.put("even", 6); assertEquals(Arrays.asList(1,3,5), numberClasses.get("odd")); assertEquals(Arrays.asList(2,4,6), numberClasses.get("even"));
Another interesting example would be SetMultimap , which is very similar to ListMultimap, except that the values for the key are stored in a set. (From a user’s point of view, I don’t know how exactly this is implemented.)
SetMultimap<String, Integer> setMultimap= HashMultimap.create(); setMultimap.put("key1", 1); setMultimap.put("key1", 1); setMultimap.put("key1", 1); setMultimap.put("key1", 2); setMultimap.put("key2", 1); setMultimap.put("key2", 3); assertEquals(ImmutableSet.of(1,2), setMultimap.get("key1")); assertEquals(ImmutableSet.of(1,3), setMultimap.get("key2"));
Ivan Koblik Sep 21 '12 at 19:14 2012-09-21 19:14
source share