黑马程序员技术交流社区

标题: 为什么6对键值,存进Map里少了一对数据呢? [打印本页]

作者: LARK    时间: 2016-10-12 18:09
标题: 为什么6对键值,存进Map里少了一对数据呢?
为什么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?这是为什么,求解?
作者: LARK    时间: 2016-10-12 18:16
坐等大神回复..
作者: LARK    时间: 2016-10-12 18:33
下面是程序跑的结果:
,切割后数组长度为: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
作者: songchangchang    时间: 2016-10-12 18:45
亲,问题很简单,MAP特点,键唯一,值可重复,5作为键你用了两次,被覆盖了
作者: 读书可以当饭吃    时间: 2016-10-12 19:15
因为第3对和第5对的键值一样了,Map中键值是唯一的,后面添加的会覆盖前面键值一样的
作者: LARK    时间: 2016-10-12 19:19
songchangchang 发表于 2016-10-12 18:45
亲,问题很简单,MAP特点,键唯一,值可重复,5作为键你用了两次,被覆盖了

嗯,刚明白过来

作者: LARK    时间: 2016-10-12 19:21
读书可以当饭吃 发表于 2016-10-12 19:15
因为第3对和第5对的键值一样了,Map中键值是唯一的,后面添加的会覆盖前面键值一样的 ...

非常感谢,这次记忆深刻了

作者: songchangchang    时间: 2016-10-12 19:23
....加油
作者: 13902480061    时间: 2016-10-12 20:27
map键相同,5

作者: bxd1013    时间: 2016-10-12 20:37
华姐 ... 可以用IdentityHashMap类试试   可以存重复的键   我是这样做的..
作者: skay50    时间: 2016-10-12 20:55
传入比较器,保留重复
作者: bxd1013    时间: 2016-10-12 21:15
我竟然把TreeMap可以传比较器给忘了  真是想哭

作者: LARK    时间: 2016-10-13 00:44
skay50 发表于 2016-10-12 20:55
传入比较器,保留重复

嗯嗯,好主意,





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2