list赋值问题

城府殿 2019-04-11 09:59:43
for (int i = 0; i < list.length; i++) {
month = new LinkedHashMap();
month.put(list[i], "0");
latest12Months.add(month);
latest12Months2.add(month);
}
System.out.println("latest12Months2---------"+latest12Months2);
List<SecurityAdministrationDto> DH = securityAdministrationService.getDH();
List resultDH = new ArrayList();
for (int i = 0; i < latest12Months.size(); i++) {
for (String key : latest12Months.get(i).keySet()) {
String value = (String) latest12Months.get(i).get(key);
for (int j = 0; j < DH.size(); j++) {
if (key.equals(DH.get(j).getMonth())) {
((Map) latest12Months.get(i)).put(key, DH.get(j).getSum());
}
}
}
}
System.out.println("latest12Months---------"+latest12Months);
System.out.println("latest12Months2---------"+latest12Months2);


Month2没有赋值,为什么会和之前的不一样
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2019-04-11
  • 打赏
  • 举报
回复
System.identityHashCode的问题请参考https://blog.csdn.net/LCL_data/article/details/89205416
十八道胡同 2019-04-11
  • 打赏
  • 举报
回复
package com.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
        List<HashMap<String,String>> list2=new ArrayList<HashMap<String,String>>();
        for (int i=0;i<10;i++)
        {
            HashMap<String,String> tmpMap=new HashMap<String,String>();
            tmpMap.put("a","b");
            list.add(tmpMap);
            list2.add(tmpMap);
            System.out.println(System.identityHashCode(list.get(i)) );
            System.out.println(System.identityHashCode(list2.get(i)));
        }
    }
}
十八道胡同 2019-04-11
  • 打赏
  • 举报
回复
for (int i = 0; i < list.length; i++) { month = new LinkedHashMap(); month.put(list[i], "0"); latest12Months.add(month); latest12Months2.add(month); } 这样的方式创建的month,那你在latest12Months和latest12Months2里面的对应的下标的month是同一个,修改latest12Months里面的自然会把latest12Months2里面的修改掉 如果不想有这种情况,就单独创建一个新的对象存储到latest12Months2 里面。 1楼的回复看不错,不好意思。
城府殿 2019-04-11
  • 打赏
  • 举报
回复
引用 1 楼 LCL_data 的回复:
((Map) latest12Months.get(i)).put(key, DH.get(j).getSum());

这句不是修改了吗
这不是latest12Months2啊
十八道胡同 2019-04-11
  • 打赏
  • 举报
回复
((Map) latest12Months.get(i)).put(key, DH.get(j).getSum()); 这句不是修改了吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧