java中map put方法的问题

publicstaticvoidmain(String[]args){Map<String,List<String>>map=newHashMap<String,List... public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("1", null);
List<String> list1 = map.get("1");
if (list1 == null) {
list1 = new ArrayList<String>();
//map.put("1", list1);
}
System.out.println(map.get("1"));
}
上述代码,为什么必须添加注释的那一行代码。我的印象中 list1 拿出来后应该就是一个“指针”了啊,还需要在map中put回去吗?
ps:
放开这一句 map.put("1", list1); 打印:[ ]
注释掉这一句 map.put("1", list1); 打印:null
展开
 我来答
百度网友acfb1c5
推荐于2017-09-07 · TA获得超过657个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:271万
展开全部
public static void main(String[] args) {

    Map<String, List<String>> map = new HashMap<String, List<String>>();
    map.put("1", null);  

    List<String> list1 = map.get("1");//存入的是null  取出来肯定也是null ,不管赋给哪个引用变量
     if (list1 == null) {
//所以这个判断一定会进入 
      list1 = new ArrayList<String>();//这里是把list1指向   一个  ArrayList对象  
 //map.put("1", list1);//把指向的ArrayList对象存入
 }
    System.out.println(map.get("1"));//再取出打印 
}

 
放开这一句 map.put("1", list1);  打印:[ ]   是因为ArrayList对象是没元素的,toString打印就是[]

注释掉这一句 map.put("1", list1);  打印:null  是因为list1指向的是null

华兴兴华
2014-10-15 · TA获得超过189个赞
知道小有建树答主
回答量:297
采纳率:100%
帮助的人:221万
展开全部
你刚开始就map.put("1", null)了,如果不放开注释就是null,放开的话map重新map.put("1", list1);给1的位置放了一个空的list集合对象,这个对象元素是空的,自己本身不是空的(开辟内存空间了)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-15
展开全部
list1 = new ArrayList<String>();仔细考虑这条语句。这条语句是你重新创建一个新的List所以你put一个list1和不put是有区别的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靖挚人生
2014-10-15 · 超过20用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:28.1万
展开全部
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("1", null);
List<String> list1 = map.get("1");
if (list1 == null) {
list1 = new ArrayList<String>();
System.out.println(list1); // 这个list1 new 出来后就是 []
//map.put("1", list1); //这里重新 map.put 因为键相同 ,会覆盖前面的那个
}
System.out.println(map.get("1"))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
helious丶
2014-10-15 · 超过44用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:91.9万
展开全部
你注释掉那句话,key为1对应的value是初始化的list1所以是[],注释叼就是null、这个有什么冲突吗、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式