gpt4 book ai didi

java - 循环的最后一个值正在整个 map 中添加吗?

转载 作者:行者123 更新时间:2023-12-01 18:38:04 25 4
gpt4 key购买 nike

伙计们,我有一个简单的问题,我无法弄清楚!请帮忙

     for(Investor investor : registerdUsers) {
formatedDate = sdf.format(investor.getRegistrationDate());
if(dateWiseInvestorsMap.containsKey(formatedDate)) {
dateWiseInvestorsList.add(investor);
dateWiseInvestorsMap.put(formatedDate, dateWiseInvestorsList);
} else {
dateWiseInvestorsList.clear();
dateWiseInvestorsList.add(investor);
dateWiseInvestorsMap.put(formatedDate, dateWiseInvestorsList);
System.out.println("here goes date"+formatedDate);
}
}

编辑:添加打印语句

for(Map.Entry<String, List<Investor>> entry :dateWiseInvestorsMap.entrySet()) {
System.out.println("date :" + entry.getKey() + ", count :" + entry.getValue().size());
}

这是代码,最后一个值被添加到 map 的所有值中。

预期:

date :2012-01-01 Count:7
date :2012-01-02 Count:13
date :2012-01-03 Count:12
date :2012-01-04 Count:10
date :2012-01-05 Count:11
date :2012-01-06 Count:8

当前:

date :2012-01-01 Count:8
date :2012-01-02 Count:8
date :2012-01-03 Count:8
date :2012-01-04 Count:8
date :2012-01-05 Count:8
date :2012-01-06 Count:8

最佳答案

您输入的是相同的 List<Investor>针对所有键,因为您一遍又一遍地重复使用相同的列表。相反:

  • 当您发现自己有新 key 时创建一个新列表
  • 当您有现有 key 时检索现有列表

像这样:

List<Investor> list;
for(Investor investor : registerdUsers) {
formatedDate = sdf.format(investor.getRegistrationDate());
if (dateWiseInvestorsMap.containsKey(formatedDate)) {
list = dateWiseInvestorsMap.get(formattedDate);
} else {
list = new ArrayList<Investor>();
dateWiseInvestorsMap.put(formatedDate, list);
}
list.add(investor);
}

关于java - 循环的最后一个值正在整个 map 中添加吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com