带有重复键的java地图

我正在创建一个需要存储键值对的程序。 程序需要以键的forms接受请求,并返回相应的值。

问题是每个键有时会有多个值,而map类不允许重复键。

值是数字,所以我无法像字符串一样有意义地连接值。

是否有任何优雅的方法来解释每个键可以有多个数值的事实? 我想要返回每个数字,而不是随机返回一个。

$ cat YourMap.java public class YourMap extends HashMap> { public void put(String key, Integer number) { List current = get(key); if (current == null) { current = new ArrayList(); super.put(key, current); } current.add(number); } public static void main(String args[]) { YourMap m = new YourMap(); m.put("a", 1); m.put("a", 2); m.put("b", 3); for(Map.Entry e : m.entrySet()) { System.out.println(e.getKey() + " -> " + e.getValue()); } } } $ java map b -> [3] a -> [1, 2] 

您正在寻找的结构称为“多图”。 您可以使用带有ArrayLists的普通地图作为值,也可以使用多图实现。 谷歌的“番石榴”工具包中有一个很好的。 看到这里。

如果您将值设为列表,则它将能够为键存储多个值

 Map> map = new HashMap>();