我在映射这些数据时遇到问题
1 35
1 30
1 20
2 10
3 40
3 25
3 15
Run Code Online (Sandbox Code Playgroud)
我尝试使用HashMap,但它只会映射到此数据的最后一次出现.
的行为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);
}
Run Code Online (Sandbox Code Playgroud)
输出:
{1 = [35,20,30],2 = [10],3 = [25,40,15]}
如果要访问这些值,有几种方法取决于您要执行的操作.只是调用get(Integer key)将返回值的集合.
另外,看看这个答案,其中引用了番石榴的许多相关优点.
| 归档时间: |
|
| 查看次数: |
967 次 |
| 最近记录: |