volking 2008-08-06 15:16
浏览 283
已采纳

java基础问题

[code="java"]
List list = new ArrayList();
list.add(new HashMap().put("1", "2"));

    Map map = new HashMap();
    map.put("1", "2");
    list.add(map);

    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
        Map map1 = (Map) iterator.next();
        System.out.println(map1);
    }

[/code]

结果如下:
null
{1=2}

为何不同呢?

  • 写回答

1条回答 默认 最新

  • iteye_14762 2008-08-06 15:22
    关注

    下面是HashMap中put(.., ..)方法的实现:
    [code="java"]public V put(K key, V value) {
    if (key == null)
    return putForNullKey(value);
    int hash = hash(key.hashCode());
    int i = indexFor(hash, table.length);
    for (Entry e = table[i]; e != null; e = e.next) {
    Object k;
    if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
    V oldValue = e.value;
    e.value = value;
    e.recordAccess(this);
    return oldValue;
    }
    }

        modCount++;
        addEntry(hash, key, value, i);
        return null;
    }[/code]
    

    在你的代码中, [code="java"]list.add(new HashMap().put("1", "2")); [/code], 因为[code="java"]new HashMap().put("1", "2")[/code]返回的是null, 所以你的这条语句实际上add的是null.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题