gpt4 book ai didi

java - TreeMap 和 setValue 方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:54 24 4
gpt4 key购买 nike

java.util.TreeMap javadoc有这样的说法:

All Map.Entry pairs returned by methods in this class and its views represent snapshots of mappings at the time they were produced. They do not support the Entry.setValue method. (Note however that it is possible to change mappings in the associated map using put.)

我不明白这一行。 他们在哪些方面不支持 setValue 方法? 当我使用 entrySet() 并遍历 Map.Entry 时对象它设置值很好。

    Map<String, Integer> map = new TreeMap<>();
map.put("dbc", 1);
map.put("abc", 1);
map.put("cbc", 1);
for(Map.Entry<String, Integer> item: map.entrySet()) {
item.setValue(1);
}

最佳答案

这是一个已知问题。

  • 有一个 OpenJDK 跟踪器条目 ( JDK-8038146 ) 指出这是一个 javadoc 错误。但不仅如此。

  • 还有一个 Java Bug 数据库条目 ( bug id 7006877 ) 解释了 javadoc 在 Java 6 中被更改为这样说,并且对于替代版本它实际上是正确的如果您在启用积极优化的情况下运行 JVM,您将获得 (got) 的 TreeMap

    这张票还说这个问题影响了 Java 7,并在 Java 8 中得到了修复。他们显然删除了替代的 TreeMap 实现......尽管他们没有改变 javadoc。


评论:

如果要相信问题跟踪器(并且我已经正确理解了它们),那么 javadoc 可能应该说 Java 6 和 Java 可能不支持 Entry.setValue 方法7. 但从 Java 8 开始,可以完全删除误导性句子。

这样做是否正确还有待商榷,因为有些人需要了解他们的新 Java 代码如何在旧平台上运行。也许最好将其作为历史脚注。

关于java - TreeMap 和 setValue 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com