gpt4 book ai didi

java - 更改用作 Map 键的对象

转载 作者:行者123 更新时间:2023-12-01 08:16:16 24 4
gpt4 key购买 nike

设 V 是一个具有名为 K 的单个属性及其 getter 和 setter 的类。

如果我这样做会发生什么:

V v = new V();
v.setK("a");
HashMap<K,V> map = new HashMap<K,V>();
map.put(v.getk(),v);
v.setK("b");

据我所知,这应该会导致某种问题,因为映射键应该是不变的。这里会发生什么?

编辑:考虑键不是字符串而是可变对象,如下面的评论中所述。

最佳答案

引自“ map ”界面 JavaDoc:

Great care must be exercised if mutable objects are used as map keys. The behavior of a map is not specified if the value of an object is changed in a manner that affects equals comparisons while the object is a key in the map.



你根本不应该改变键(以改变它们的“hashCode”/“equals”的方式)。如果您尝试,您肯定会进行非常漫长而糟糕的调试。
就像你在图书馆交换书籍一样。索引变得不可靠。您搜索“Bradbury”,但找到“Simak”。

关于java - 更改用作 Map 键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153063/

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