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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩俊杰 中级黑马   /  2013-1-1 23:11  /  1497 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩俊杰 于 2013-1-3 14:20 编辑

package practice;
import java.util.*;
public class MapDemo {
public static void main(String[] args) {
  Map<String,String> map=new HashMap<String, String>();
  
  sop("put:"+map.put("01","zhangsan"));    //输出 put:null
  sop("put:"+map.put("01","lisi"));               //输出 put:zhangsan
}

public static void sop(Object obj){
  System.out.println(obj);
}
}

第一次为什么输出null,添加了一个元素,为什么是返回的是null?
第二次为什么输出zhangsan,一个键对应一个值,lisi把zhangsan覆盖了,为什么输出zhangsan?
请高手指点

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 刘文超 于 2013-1-1 23:39 编辑

lz你好,我对这个还有些了解、共同学习一下哈、
map.put(key,value);这个方法的返回值是:
如果集合中已经存在该键值,则把旧的value覆盖掉,并返回旧的value;
如果不存在则返回null、
代码注释如下:
  1. sop("put:"+map.put("01","zhangsan")); //此时map中不存在键值为“01”的元素,所以返回null;
  2. sop("put:"+map.put("01","lisi")); //此时map中已经存在键值为”01“的元素了,所以要覆盖掉旧的value,并将旧的value返回,即返回zhangsan。
复制代码

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 鼓励一下

查看全部评分

回复 使用道具 举报
是否可以看在我这么晚了还在认真回复贴子的份上
、赏一个技术分呢、、
谢谢~
回复 使用道具 举报
put返回对应key的原来的一个值,但是直接输出的时候原来没有值,所以没有返回,当你第二次再输出01的时候,它就有一个值了,就是zhangsan,再往下运行,lisi就会替代zhangsan了
回复 使用道具 举报
刘文超 发表于 2013-1-1 23:41
是否可以看在我这么晚了还在认真回复贴子的份上
、赏一个技术分呢、、
谢谢~ ...

都很爱学习啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马