【问题标题】:what happens if we 'put' and new value to an already existing key in the Linkedhashmap如果我们将新值“放入”Linkedhashmap 中已经存在的键会发生什么
【发布时间】:2014-02-06 10:51:27
【问题描述】:

我有一组固定的键值对来初始化LinkedHashMap<String, Double>.

当我做一个时,插入顺序是否保持不变

LinkedHashMap.put(existingKey, newValue);

确切地说,我的问题是,当我们使用put 方法更新键的值时,初始插入的顺序是否受到干扰?

如果是这样 1) 为什么? 2) 我怎样才能防止这种情况保持最初的插入顺序?

我选择LinkedHashMap 是因为,我想要一个支持键值对并保持插入顺序的集合。

TIA

【问题讨论】:

    标签: java data-structures map hashmap linkedhashmap


    【解决方案1】:

    来自课堂文档:

    请注意,如果将键重新插入地图,则插入顺序不会受到影响。 (如果在调用 m.containsKey(k) 将在调用之前立即返回 true 时调用 m.put(k, v),则将键 k 重新插入到映射 m。)

    【讨论】:

      【解决方案2】:

      这个链表定义了迭代顺序,通常是 键插入映射的顺序(插入顺序)。

      所以,是的,keySet()、values() 和 entrySet()(提到的三个集合视图)按照内部链表使用的顺序返回值。是的,Map 和 LinkedHashMap 的 JavaDoc 保证了这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-22
        • 2016-07-30
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多