1
1
注: 这个答案通常是关于可变对象的,即hashCode和equals方法依赖于可变成员值的对象。在您的例子中,GamePiece是可变的,但是equals和hashCode方法不受可变成员的影响。
这是可以接受的做法,只要使用相同的成员计算equals和hashcode。 一般来说,可变对象不会影响您对ArrayList的使用:您可以插入可变对象, ,使用索引访问可变对象, 获取(索引) 删除(索引) 如果使用remove(object)和indexOf(object)方法删除或搜索对象,ArrayList将对ArrayList中的对象调用equals(),因此程序需要注意ArrayList中的对象在插入后可能已更改。这对于GamePiece来说不是问题,因为equals()方法不依赖于可变成员。
只要检查一下 Collections API “注意:如果使用可变对象作为映射键,则必须非常小心。当对象是映射中的键时,如果对象的值以影响equals比较的方式更改,则不指定映射的行为。这项禁令的一个特例是,不允许地图将自身作为一把钥匙。虽然允许映射将自身包含为一个值,但还是要特别小心:equals和hashCode方法在这样的映射上已经没有很好的定义。” |
2
2
是的,当然你是怎么定义你的
这里发生的是
你会注意到如果
如果您的可变类
|
3
1
其中的一个好处是你可以自由地设计你的产品
|
4
1
平等具有你想要赋予它的意义。。
在你的例子中,你的意思是
这是什么意思?
|
synthax · 具有容差级别的双精度哈希方法 7 年前 |
Relaxsingh · 附加导师程序无法正常工作***阅读说明*** 7 年前 |
user8589267 · 我的equals方法有什么问题? 7 年前 |
James W. · 带有通配符的java黑名单 7 年前 |