【问题标题】:How do I stop HashMap from overwriting previous value for a key? [closed]如何阻止 HashMap 覆盖键的先前值? [关闭]
【发布时间】:2016-07-26 20:10:00
【问题描述】:

使用我的代码,新值会覆盖之前针对同一个键存储的值。

这是我的代码:

HashMap<String, String> meMap = new HashMap<String, String>();
meMap.put(p.getName(), selState);

【问题讨论】:

标签: java hashmap


【解决方案1】:

如果所有的键都相同,那么您应该将键映射到值列表:Map&lt;String, List&lt;String&gt;&gt;

然后更新映射到特定键的值列表:

List<String> values = map.get(key);
values.add("new");
map.put(key, values);

【讨论】:

  • 我有不同的键......所以我如何才能动态地将更多的“键,对象”放入地图中?
  • @markella 如果您有不同的键,HashMap 将保留两个键值对。但很明显,您将相同的键设置为不同的值。
  • 我有不同的键和一些值....
  • 所以如果我只写一次“meMap.put(p.getName(), selState);”它不会覆盖?
  • 如果密钥不同,则不应覆盖旧值。应该添加新的键值条目。
【解决方案2】:

HashMap 是一对键/值对象。对于给定的键,它只能是一个值。

如果您尝试放置已存在的相同键,您将替换该键的现有值。

如果你想添加一个新值,你必须给那个值一个新的键。

【讨论】:

  • 但是密钥对所有人都是一样的......
  • 我必须为所有对象添加一个 id 吗?
  • 所以,您不需要HashMap 来解决您的问题。如果同一个键需要多个值,您可以为每个键插入任意类型的CollectionString(假设您的HashMap 中有多个键)。
  • 是的,我的 hasmap 中有不止一个键
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2021-10-28
相关资源
最近更新 更多