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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么6对键值,存进Map里少了一对数据呢? 少一个5.6?这是为什么,求解?  
        public static void main(String[] args) {
                String s = "1.2,3.4,5.6,7.8,5.56,44.55";
                String[] arr = s.split(",");
                //System.out.println(arr.length);          //6
                Map<Object, Object> map = new HashMap<Object, Object>();
                for (int i = 0; i < arr.length; i++) {
                        String[] arr2 = arr[i].split("\\.");
                        map.put(arr2[0], arr2[1]);
                }
                //System.out.println(map.size());  //为什么这里长度就变成5了?少一个5.6?这是为什么,求解?

12 个回复

倒序浏览
坐等大神回复..
回复 使用道具 举报
下面是程序跑的结果:
,切割后数组长度为:6
arr为:1.2
1和2
arr为:3.4
3和4
arr为:5.6
5和6
arr为:7.8
7和8
arr为:5.56
5和56
arr为:44.55
44和55
双列集合长度为:5
3...4
1...2
7...8
44...55
5...56
回复 使用道具 举报
亲,问题很简单,MAP特点,键唯一,值可重复,5作为键你用了两次,被覆盖了
回复 使用道具 举报
因为第3对和第5对的键值一样了,Map中键值是唯一的,后面添加的会覆盖前面键值一样的
回复 使用道具 举报
songchangchang 发表于 2016-10-12 18:45
亲,问题很简单,MAP特点,键唯一,值可重复,5作为键你用了两次,被覆盖了

嗯,刚明白过来
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
LARK 中级黑马 2016-10-12 19:21:55
7#
读书可以当饭吃 发表于 2016-10-12 19:15
因为第3对和第5对的键值一样了,Map中键值是唯一的,后面添加的会覆盖前面键值一样的 ...

非常感谢,这次记忆深刻了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
....加油
回复 使用道具 举报
回复 使用道具 举报
华姐 ... 可以用IdentityHashMap类试试   可以存重复的键   我是这样做的..
回复 使用道具 举报
skay50 初级黑马 2016-10-12 20:55:32
11#
传入比较器,保留重复
回复 使用道具 举报
我竟然把TreeMap可以传比较器给忘了  真是想哭
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
LARK 中级黑马 2016-10-13 00:44:10
13#
skay50 发表于 2016-10-12 20:55
传入比较器,保留重复

嗯嗯,好主意,
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马