A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张晋瑜 中级黑马   /  2013-2-17 16:15  /  15255 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhangjinyu1991 于 2013-2-20 13:02 编辑

是这样子的,Map中的Key-value对不是不可以重复的嘛,那假如其中已经有了一个(“apple”,4500),我再map.add("apple",5400),那结果会怎么阳呢?

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

7 个回复

倒序浏览
键相同值会覆盖,
如果有了(“apple”,4500),再map.add("apple",5400),
相当于只存了map.add("apple",5400),


int[] arr = new int[3];
arr[0] = 3;
arr[0] = 4;

最终存的是这个4
回复 使用道具 举报
李培根 发表于 2013-2-17 16:26
键相同值会覆盖,
如果有了(“apple”,4500),再map.add("apple",5400),
相当于只存了map.add("apple",54 ...

那是不是就是说之前的那个数据摸除了呢?
是不是Map中不同Key的value是可以相同的?
回复 使用道具 举报
自己测试吖
回复 使用道具 举报
首先map集合里面没有add()这个方法
该集合添加键值对用的是put(key,value);
将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值
回复 使用道具 举报
不就是修改对应key的value嘛
回复 使用道具 举报
结果是这样的,
会返回4500这个值,
但是存入的是覆盖后的5400,用get(apple)时,查到的是5400
回复 使用道具 举报
     朋友你首先搞清楚,Map是根据什么来检测重复。它有一套自己的准则的。它设计的原意是不希望Key重复的,Key译为关键字,用于唯一标识一个Map对象,你如果存放的Key对象因为自己的类设计不当而出现数据混乱,Map就不能正确访问元素。就HashMap和HashTable而言,Key类设计的原则都是合理地重写equals方法和hashCode方法。就你存的例子而言,map.add("apple",4500),我假定你没有存入这个对象。当你再存入map.add("apple",4500)时,HashMap就会用equals方法检测到你已经存过一个“apple”的key,那么你存入就不会成功。
Key可以是各种各样的对象,但最重要的是你的equals方法和hashCode方法设计一致。简单地说,equals方法返回true,hashCode方法返回true,equals方法返回false,后者也返回false。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马