java中,map集合里面,一个key对应value可以,一个key对应多个value也行,但是多个key可以对应同一个value

如果多个key可以同一个value的话,在代码中怎么能够体现,让多个key映射到同一个value上面,如果采用多map的话,查询的效率有没有影响?有没有必要让多个key映... 如果多个key可以同一个value的话,在代码中怎么能够体现,让多个key映射到同一个value上面,如果采用多map的话,查询的效率有没有影响?有没有必要让多个key映射到一个value上面? 展开
 我来答
501703793yang
2012-11-05 · TA获得超过155个赞
知道答主
回答量:100
采纳率:100%
帮助的人:60.5万
展开全部
我想说一句,一个key可以对应多个value?
key是键,存在栈里的,存的是值在堆的地址,value是值,存在堆里,存的是哈希码
JAVA中的map应该是一对一吧。
追问
那如果多个不同的key对应相同的value时,我们该怎么处理呢?当我把这些键值对存了过后不需要改变,有没有什么简便的方法存储来节约空间?
追答
如果是同一个MAP的话,其实在堆上只有一个value,在栈上的不同key存的是相同的地址(即都是指向同一个value)你运行下一下代码   看看 打印的HashCode是不是一样的嘛:
public static void main(String[] args) {

Map map = new HashMap();

map.put("北京","中国");
map.put("上海","中国");
map.put("四川","中国");
map.put("重庆","中国");

for(String str : map.keySet()){
System.out.println("value:" + map.get(str) + "--HashCode:" + map.get(str).hashCode());
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duzc2
2012-11-05 · TA获得超过2512个赞
知道大有可为答主
回答量:1987
采纳率:50%
帮助的人:2060万
展开全部
一个key对应多个value也行? 这个不可以!

你后面提的那些问题。。没法解答,就好像问:有没有必要计算2+3?
那如果你业务中就要求这个值,那肯定要计算的。。业务上没有,你聊这个都没有意义。。

Map<String,String> map = new HashMap<String,String>();
map.put("123","abc");
map.put("234","abc");
这样就是2个key对应一个value的
更多追问追答
追问
我知道,我目前的情况就是这一种,就是说在代码方面有没有什么简便的实现使的多个key对应一个value,那样不是节约存储空间吗
追答
一个map可以做到,你干嘛要用多个?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-11-05 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3458万
展开全部
map就是键值对 一对一 ....没有一对多这么一说

不过如果是多个key对应一个value 修改其中一个value的话所有value的值都改变
可以把value设定成同一个对象的引用就好了
追问
如何将一个value设定为同一个对象的引用呢
map.put("123","abc");
map.put("234","abc");

写代码的时候应该还是这个样子的吧,有什么简便的写法吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
般若兮若
2012-11-05 · TA获得超过2705个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:932万
展开全部
Object obj=new Object();
map.put("1",obj);
map.put("2",obj);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式