【问题标题】:Why element of Java Hash map overrides the previous elements?为什么 Java Hash map 的元素会覆盖之前的元素?
【发布时间】:2017-03-29 07:27:14
【问题描述】:

假设在 java 集合的哈希映射中已经有一对 0,"Ram",我添加了一个具有相同键的新对 0,"Sham"。我知道它会覆盖该值,最后我们得到哈希集中的 0,“Sham”。 我的问题是为什么“Sham”即较新的元素会覆盖“Ram”即先前的元素?是否有任何功能可以阻止这种覆盖,或者我应该使用 if-else 条件来检查它?

【问题讨论】:

    标签: collections hashmap key overriding


    【解决方案1】:

    您可以使用委托技术编写自己的 put 方法,如果 map 中已经存在任何值,则忽略 put 的调用并返回 false 状态。

    boolean putIfNotPresent(Map map, Object key, Object value){
        if(map.get(key)==null){
            map.put(key, value);
            return true;
        }else{
            return false;
        }
    }
    

    为什么默认值会被覆盖 :
    它全都与功能的用例有关。 Java 实现了最常见的用例。并且有任何特定用例的选项。

    【讨论】:

    • 这是我第二个问题的答案。我想知道为什么它被覆盖
    • 告诉我,为什么它不应该被覆盖?如果有人想存储键值映射,大多数情况下他将需要唯一且更新的值。他不会费心去测试它是否已经存在,这会增加他的程序的复杂性,而这在大多数情况下可能不需要。
    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多