黑马程序员技术交流社区
标题:
关于Map集合添加元素的问题
[打印本页]
作者:
唐巍
时间:
2012-3-23 16:12
标题:
关于Map集合添加元素的问题
请看下面代码:
import java.util.*;
class MapDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
Map<String,String> map=new HashMap<String,String>();
sop("put:"+map.put("01","linlin01"));//添加键值为"01","linlin01",打印结果为null,为什么?
sop("put:"+map.put("01","tangwei"));
sop(map);
}
}
作者:
陈汉帆
时间:
2012-3-23 16:26
本帖最后由 陈汉帆 于 2012-3-23 16:27 编辑
put方法再添加元素的同时会返回被添加位置的value值,如果那个位置本来为空,那么就方回null了,
当执行sop("put:"+map.put("01","tangwei"));时覆盖了"01"位置,这时返回原先这个位置的值linlin01
作者:
张明星
时间:
2012-3-23 16:26
是不是因为键值相同,被("01","tangwei") 给替换了
作者:
张明星
时间:
2012-3-23 16:31
哦,明白了,put()返回的是被替换的值,就是以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null,具体点说
put("01","linlin01"),之前01对应空值,返回空。
put("01","tangwei"),之前01对应linlin01,就输出linlin01
作者:
刘元霄
时间:
2012-3-23 16:32
sop("put:"+map.put("01","linlin01"));//添加键值为"01","linlin01",打印结果为null,为什么?
V put(K key, V value)
在此映射中关联指定值与指定键。
put的返回值类型 是 V
而你这样并不是 输出 01 和 linlin01 这只是添加元素 而元素添加到Map集合里了, 而你打印put 肯定就是空了。
作者:
冯建鹏
时间:
2012-3-23 16:37
Map的 put方法是将指定的值与此映射中的指定键关联,如果此映射以前包含一个该键的映射关系,则用指定值替换旧值。
返回值:
以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null
因为以前你的键01 所对应的value为空所以打印的时候会为null 当你第二次为键01赋值的时候它将返回时第一次的value值
作者:
刘元霄
时间:
2012-3-23 16:39
sop("put:"+map.put("01","linlin01"));//添加键值为"01","linlin01",打印结果为null,为什么?
V put(K key, V value)
在此映射中关联指定值与指定键。
put的返回值类型 是 V
而你这样并不是 输出 01 和 linlin01 这只是添加元素 而元素添加到Map集合里了, 而你打印put 肯定就是空了。
当你第二次put添加的时候 同一个键的值被替换了 ,所以会打印出替换前的 值! 总体来说 你必须得明白返回值类型。
put的返回值 是V 所以 你输出put的时候肯定是一个值 而不是键值对。
你去毕老师这一课听听你就明白了 put被替换时候 会返回替换之前的值!
作者:
刘元明
时间:
2012-3-23 16:51
map集合使用put方法添加元素时可以注意两个细节:1.如果集合中已经有了要添加的键,那么后添加的那个键对应的值将会覆盖前一个值;
2.调用put方法后返回的是这个键以前对应的那个值,如果这个键之前不存在就会返回null。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2