黑马程序员技术交流社区

标题: 关于Map问题 [打印本页]

作者: 张吉日    时间: 2012-8-17 12:12
标题: 关于Map问题
为什么这个打印出来是put:null  原理是什么?

import java.util.*;
class  MapDemo1
{
        public static void main(String[] args)
        {
                Map<String,String> map = new HashMap<String,String>();
               
                System.out.println("put:"+map.put("01","A"));// 为什么这个打印出来是put:null
                System.out.println("put:"+map.put("01","B"));//
                map.put("02","C");
                map.put("03","D");

                System.out.println(map);

        }
}

作者: 童兴龙    时间: 2012-8-17 12:31
你new的是HashMap的对象,因为HashMap中允许有NULL。
map接口的key-value映射关系中,key或value允许为null由具体实现决定。
put方法必须有个返回值,该返回值用来暗示map容器中是否已存在相同的key。
一般情况,如果key已存在,则替换旧的value并返回它,否则创建映射并返回null。这句话就是说你的 key 01创建时候不存在,所以就创建映射并返回null

作者: 牛杨    时间: 2012-8-17 12:31
  System.out.println("put:"+map.put("01","A"));// 为什么这个打印出来是put:null
这是因为 你是第一次向你这个map中添加映射。 而这个put方法返回的是你上一次在这个相同的键里面添加的值。但是你这是第一次添加这个键,所以就返回了null。
比如
map.put("02","C");
System.out.println("put:"+map.put("02","B"));  //因为你又向这个02键里面添加了B(覆盖了原来的C)那么着句打印的是 C  。

其实主要时map集合的 put(key , value)方法 要返回 以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。 这是java API里面的原话 。
希望对楼主有帮助!
作者: 张吉日    时间: 2012-8-17 12:39
牛杨 发表于 2012-8-17 12:31
System.out.println("put:"+map.put("01","A"));// 为什么这个打印出来是put:null
这是因为 你是第一次 ...

这样看着明了些,这两句有什么不同地方吗 ?
System.out.println("put:"+map.put("01","A"));

map.put("02","C");
----------------------------------------------------------------------
map.put("01","A");
map.put("02","C");
这两句打印出来就没事
作者: 牛杨    时间: 2012-8-17 12:53
张吉日 发表于 2012-8-17 12:39
这样看着明了些,这两句有什么不同地方吗 ?
System.out.println("put:"+map.put("01","A"));

map.put("01","A");
map.put("02","C");
这两句打印出来就没事
因为你在这两句之前向map中添加了映射
System.out.println("put:"+map.put("01","A"));
map.put("02","C");

作者: 张吉日    时间: 2012-8-18 22:10
牛杨 发表于 2012-8-17 12:53
map.put("01","A");
map.put("02","C");
这两句打印出来就没事

谢谢你的解答




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