gpt4 book ai didi

java - 包含自身作为值的 map ;

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:39 25 4
gpt4 key购买 nike

直接来自 this java文档:

A special case of this prohibition is that it is not permissible for a map to contain itself as a key. While it is permissible for a map to contain itself as a value, extreme caution is advised: the equals and hashCode methods are no longer well defined on such a map.

为什么 hashcode 和 equals 在这样的 map 上不再明确定义?

最佳答案

大多数 Map 实现使用的相关部分形成 AbstractMap.equals:

            Iterator<Entry<K,V>> i = entrySet().iterator();
while (i.hasNext()) {
Entry<K,V> e = i.next();
K key = e.getKey();
V value = e.getValue();
if (value == null) {
if (!(m.get(key)==null && m.containsKey(key)))
return false;
} else {
if (!value.equals(m.get(key))) // would call equals on itself.
return false;
}
}

将 map 添加为值会导致无限循环。

关于java - 包含自身作为值的 map ;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487290/

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