Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';新的映射方法是否会在LinkedHashMap上生成条目访问?_Java_Map_Java 8_Linkedhashmap - Fatal编程技术网

Java 为什么';新的映射方法是否会在LinkedHashMap上生成条目访问?

Java 为什么';新的映射方法是否会在LinkedHashMap上生成条目访问?,java,map,java-8,linkedhashmap,Java,Map,Java 8,Linkedhashmap,: 调用put或get方法会导致对相应条目的访问(假设在调用完成后该条目存在)。putAll方法为指定映射中的每个映射生成一个条目访问权限,顺序为指定映射的条目集迭代器提供键值映射。没有其他方法生成条目访问 为什么新的映射方法不能在LinkedHashMap上生成条目访问?尤其地这难道不违反最小惊奇原则吗 @PeterLawrey从源代码中可以清楚地看到: getOrDefault在以下情况下被覆盖: 因此,条目访问不是由getOrDefault()生成的,因为getOrDefault()必须使

:

调用put或get方法会导致对相应条目的访问(假设在调用完成后该条目存在)。putAll方法为指定映射中的每个映射生成一个条目访问权限,顺序为指定映射的条目集迭代器提供键值映射。没有其他方法生成条目访问

为什么新的映射方法不能在LinkedHashMap上生成条目访问?尤其地这难道不违反最小惊奇原则吗

@PeterLawrey从源代码中可以清楚地看到:

getOrDefault
在以下情况下被覆盖:


因此,条目访问不是由
getOrDefault()

生成的,因为getOrDefault()必须使用get()实现,所以它应该具有相同的符号,您是否测试过该方法不会改变访问顺序?@PeterLawrey请看问题编辑这是一个有趣的问题,但我投票关闭,因为我非常确定答案,除非来自该类作者,否则将是基于意见的。@leventov,对于许多OpenJDK邮件列表来说,唯一有节制的问题是,帖子仅限于列表中的成员。所以一般来说,如果你想发布消息,你必须先加入列表。我不认为有人因为你的信息无关紧要或其他原因而决定放弃你的信息。我怀疑某个地方堆积了一个庞大的审核队列,因为没有人监控它。已经提交了一份错误报告:
public V getOrDefault(Object key, V defaultValue) {
     Node<K,V> e;
     return (e = getNode(hash(key), key)) == null ? defaultValue : e.value;
}
public V get(Object key) {
    Node<K,V> e;
    if ((e = getNode(hash(key), key)) == null)
        return null;
    // generating entry access -- comment by me
    if (accessOrder)
        afterNodeAccess(e);
    return e.value;
}