由于您使用的是Map<String, List<Object>>
, 你是really寻找一个multimap http://en.wikipedia.org/wiki/Multimap。我强烈建议使用第三方库,例如 Google Guava - 请参阅Guava's Multimaps http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimaps.html.
Multimap<String, Object> myMultimap = ArrayListMultimap.create();
// fill it
myMultimap.put("hello", "hola");
myMultimap.put("hello", "buongiorno");
myMultimap.put("hello", "สวัสดี");
// retrieve
List<String> greetings = myMultimap.get("hello");
// ["hola", "buongiorno", "สวัสดี"]
Java 8 更新:我不再相信每个Map<K, SomeCollection<V>>
应该重写为多重映射。如今,无需番石榴即可轻松获得所需的东西,这要归功于Map#computeIfAbsent() http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#computeIfAbsent-K-java.util.function.Function-.
Map<String, List<Object>> myMap = new HashMap<>();
// fill it
myMap.computeIfAbsent("hello", ignored -> new ArrayList<>())
.addAll(Arrays.asList("hola", "buongiorno", "สวัสดี");
// retrieve
List<String> greetings = myMap.get("hello");
// ["hola", "buongiorno", "สวัสดี"]