黑马程序员技术交流社区

标题: Map小问题 [打印本页]

作者: 韩俊杰    时间: 2013-1-1 23:11
标题: Map小问题
本帖最后由 韩俊杰 于 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?
请高手指点


作者: 刘文超    时间: 2013-1-1 23:36
本帖最后由 刘文超 于 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。
复制代码

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

都很爱学习啊




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