正如其他评论者所指出的,您描述的 Map 和 HashMap 的行为是预期的行为。你想要的是一个多图。您可以自己滚动(不要这样做--其他评论者建议将地图映射到列表,但这很快就会变得很麻烦。如果您真的想自己滚动,请使用列表/设置值滚动您自己的通用多图并隐藏复杂性。 ) 或使用Guava 的multimap。示例:
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public static void main(String[] args)
{
final SetMultimap<Integer, Integer> 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) 将返回值的集合。
另外,请查看this answer,它引用了番石榴中的许多相关优点。