HashMap打印结果困惑 java

作者在尝试优化程序效率时,将Map实例移出循环,导致结果集仅包含最后一次迭代的映射对象,困惑于List.add操作是否仅存储了对象引用而非实际内容。

有次系统维护我做了一个很小的改动,却出了出乎意料的错误,很是困惑,

原程序示例如下:

  1. for(int i =0;i<resultList.size();i++){
  2. Map resultMap = new HashMap();
  3. resultMap = (Map)resultList.get(i);
  4. resultGetList.add(resultMap);
  5. }
  6. System.out.println("resultGetList = "+resutlGetList);

为了提高程序的效率我认为,第二行不应该放到循环的里面,因为放到里面的话每次循环总汇新建对象,影响速度,所以我改善后如下:

  1. Map resultMap = new HashMap();
  2. for(int i =0;i<resultList.size();i++){
  3. resultMap = (Map)resultList.get(i);
  4. resultGetList.add(resultMap);
  5. }
  6. System.out.println("resultGetList = "+resutlGetList);
但是修改后的结果与预期的结果不同,可是我不清楚问题出在哪里,找了很久也没找出来,修改程序后输出的list总是最后一个map值的重复,这个让我很困惑,我猜测,List.add,是添加的对象,或者说是内存的地址而已,并不是把Map的值存了起来。


          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值