如何在Java的LinkedHashMap中更新现有键的值?

2025年9月4日 | 阅读5分钟

LinkedHashMap 在 Java 编程中与 HashMap 类似,但它具有额外的功能。它会记录元素的添加顺序。标准的 HashMap 中的元素没有固定的顺序。为了记住插入键的顺序,LinkedHashMap 采用双向链表技术。

阅读更多 Java LinkedHashMap

要在 Java 的 LinkedHashMap 中更新现有键的值,我们使用 put() 方法。如果键已存在于映射中,该方法会自动用新值替换旧值。

LinkedHashMap.put() 方法如何工作?

LinkedHashMap 的关键之处在于它维护一个可预测的迭代顺序,通常是插入顺序。如果键已存在,此方法可用于更新值或向映射添加新的键值对。Java 中的 put() 方法用于在 LinkedHashMap 中实现现有键值的更新。它可用于更改 LinkedHashMap 中当前键的值。

  • 如果不存在键: 该方法会将新的键值对追加到映射中。
  • 如果键已存在: 该方法使用我们提供的新值替换与该键关联的先前值。然后,该方法返回被更改的旧值。如果键是新的,则返回 null。

示例

输入:原始 linkedHashMap:{Key1=1,Key2=2,Key3=3}

输出

已为键 'Key2' 更新值

更新的 LinkedHashMap:{Key1=1,Key2=22,Key3=3}

要记住的重要事项

键值对: LinkedHashMap 中的所有数据都可以存储为键值对,其中值分配给特定键,并且键是映射中每个元素的唯一值。

键集: 该方法返回映射中所有键的集合,用于收集 LinkedHashMap 中的键集。

插入顺序: LinkedHashMap 中元素的添加顺序会被保留。

双向链表: 为了保留元素的顺序,LinkedHashMap 使用双向链表。

示例:更新 LinkedHashMap 中现有键的值

示例

编译并运行

输出

Initial scores: {Kim=75, Jin=92, Charlie=76}
Previous score for Jin was: 92
Updated scores: {Kim=75, Jin=82, Charlie=76}
Value returned for non-existing key 'Sam': null
Final scores with new entry: {Kim=75, Jin=82, Charlie=76, Sam=88}

解释

为了存储姓名和分数,它生成了一个名为 data 的映射。按“Kim”、“Jin”和“Charlie”的顺序向其中添加了三个分数。打印映射时会保留顺序。Jin 的分数随后从 92 更新为 82。put() 方法返回了之前的分数 92。“Sam”被添加为新个体。put() 方法返回 null,因为“Sam”之前不存在。

How to Update the Value of an Existing Key in a LinkedHashMap in Java

重要注意事项

无需新技术: 与某些需要单独 update() 方法的数据结构不同,Map 实现使用与插入相同的 put() 方法来处理更新。

返回值: put() 方法返回与键关联的先前值。对于日志记录或其他需要知道先前值的任务,这可能很有帮助。

排序: LinkedHashMap 确保更改值不会改变键的迭代顺序。用于排序的内部双向链表仍然存在。这与不使用迭代顺序概念的哈希图(hash maps)是一个重要的区别。

结论

Java 灵活的 put() 方法使得在 LinkedHashMap 中更新现有键的值变得简单。主要结论是,与可能需要单独 update() 方法的其他数据结构相比,LinkedHashMap 使用 put() 来更新现有键值对并插入新键值对。

该方法在智能地确定键是否存在后,替换先前的值或添加新条目。返回先前的值是 put() 方法的一个额外优点,这对于监控更改很有帮助。因此,put() 方法不仅简单,而且是组织和管理 LinkedHashMap 中数据的强大且可靠的工具。

LinkedHashMap 选择题

1. 更新 LinkedHashMap 中现有键的值不会改变该键在迭代顺序中的 _________。

  1. 位置
  2. 哈希码
  3. 大小
 

答案: b)

解释: LinkedHashMap 的一个主要优点是更新键的值不会影响其在插入顺序中的位置。内部链表结构保持不变,确保迭代顺序始终可预测。


2. 应使用 _________ 方法来更新 LinkedHashMap 中现有键的值。

  1. put()
  2. set()
  3. update()
  4. replace()
 

答案: a)

解释: 此方法对所有 Java Map 实现都是通用的。如果映射包含现有键,put() 方法会自动用新值替换旧值。不需要 update() 和 set() 方法。


3. LinkedHashMap 能够保持可预测的迭代顺序是其主要特性之一,它维护的是 _________ 的顺序。

  1. 排序
  2. 哈希
  3. 插入
  4. 访问
 

答案:c)

解释: 与不保证任何顺序的标准 HashMap 不同,LinkedHashMap 会记录元素添加的顺序。它由双向链表维护,是其主要区别。


4. 当您使用 put() 更新现有键的值时,该方法返回被更改的 _________ 值。

  1. new
  2. 原始
  3. 先前
  4. null
 

答案:c)

解释: put() 方法是获取更新值的实用方法。如果没有值被替换,并且键不在列表中,则返回 null。它允许程序员在更新为新值之前记住先前存在的值。


5. 为了保持其元素的顺序,LinkedHashMap 使用 _________。

  1. 哈希表
  2. 二叉树
  3. 单向链表
  4. 双向链表
 

答案: d)

解释: 为了快速查找,LinkedHashMap 使用哈希表。节点通过第二个双向链表按插入顺序连接。它之所以能够即使在更新后也能保持插入顺序,是因为其内部结构。