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.

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

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统