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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张吉日 中级黑马   /  2012-8-17 12:12  /  1806 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么这个打印出来是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);

        }
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

5 个回复

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

点评

回答的真好啊  发表于 2012-8-17 17:39

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  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里面的原话 。
希望对楼主有帮助!

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
牛杨 发表于 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: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-17 12:53
map.put("01","A");
map.put("02","C");
这两句打印出来就没事

谢谢你的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马