需要帮助在Java中映射此数据

我在映射这些数据时遇到问题

1 35 1 30 1 20 2 10 3 40 3 25 3 15 

我尝试使用HashMap,但它只会映射到此数据的最后一次出现。

正如其他评论者所指出的,您描述的MapHashMap的行为是预期的行为。 你想要的是一个multimap。 您可以自己滚动(不要这样做 – 其他评论者建议将地图映射到列表,但这很快变得很麻烦。如果您真的想要自己动手,请使用列表/设置值滚动您自己的通用多图并隐藏复杂性。 )或使用Guava的多图 。 例:

 import com.google.common.collect.HashMultimap; import com.google.common.collect.SetMultimap; public static void main(String[] args) { final SetMultimap foo = HashMultimap.create(); foo.put( 1,35); foo.put( 1,30); foo.put( 1,20); foo.put( 2,10); foo.put( 3,40); foo.put( 3,25); foo.put( 3,15); System.out.println(foo); } 

输出:

{1 = [35,20,30],2 = [10],3 = [25,40,15]}

如果要访问这些值,有几种方法取决于您要执行的操作。 只需调用get(Integer key)将返回值的集合。

另外,看看这个答案 ,其中引用了番石榴的许多相关优点。

文件说明 :

公共接口地图
将键映射到值的对象。 地图不能包含重复的键; 每个键最多可以映射一个值。

相反,您可以将数字列表与每个键相关联。

您可以使用Map> (或您拥有的任何类型)来解决此问题。

Map只有一个键的单值。 您可以使用Guava / Google Collections的Multimap界面为密钥存储多个值。

或者创建一个Pair 类并将它们放在一个列表中

列表>