gpt4 book ai didi

java - HashMap 值替换旧值,即使对于 java 中的新键

转载 作者:行者123 更新时间:2023-11-30 06:33:43 25 4
gpt4 key购买 nike

我对带有日期格式字符串键的 map 进行了简单的观察。

List<String> a =new ArrayList();
a.add("as");
a.add("df");
a.add("vf");
a.add("fg");
HashMap<String,List> map = new HashMap<>();
map.put("2017-08-07", a);
System.out.println(""+map);
a.clear();
a.add("er");
map.put("2017-08-08", a);
System.out.println(""+map);

结果是

{2017-08-07=[as, df, vf, fg]}
{2017-08-08=[er], 2017-08-07=[er]}

当我清除列表并将新键分配给我的 map 时,我的旧值也会替换。

但我希望结果是这样的

{2017-08-07=[as, df, vf, fg]}
{2017-08-08=[er], 2017-08-07=[as, df, vf, fg]}

如何实现这一目标,非常感谢任何帮助。谢谢

最佳答案

调用map.put并不意味着它将为List创建一个全新的值。您将当前List a 的引用放在那里,如果您修改a,它也会在Map 中修改它。为了避免这种情况,请创建一个新列表。

更改此行

map.put("2017-08-07", a);

map.put("2017-08-07", new ArrayList<>(a));

关于java - HashMap 值替换旧值,即使对于 java 中的新键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45588727/

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