好吧,我需要指出正确的方向。我已经有了一个哈希码和一个具有覆盖功能的 equals 方法。
@Override
public int hashCode() {
return type.hashCode() ^ type2.hashCode() ^ type3.hashCode() ; }
@Override
public boolean equals(Object obj) {
if (!(obj instanceof MyObject)) {
return false;
}
MyObject mdc = (MyObject) obj;
return mdc.type.equals(type) && mdc.type2.equals(type2) && mdc.type3.equals(type3);
}
现在如果我只想比较第一种和第二种类型而不是第三种怎么办?我可以有两个 hash 和 equal 方法供以后使用吗?
我想要做的是,如果类型1和类型2匹配,则从当前数组列表中删除它们并将它们添加到新列表中,显示哪些是相同类型。这与上面显示的哈希码不同。
在数组中是否有另一种方法,我可以看到 type1 和 type2 的哪种组合出现多次?
例如:
- 射击光环
- 拍摄《使命召唤》
- 极限竞速
- ............
- ......
- ......
- 射击光环
Shooting Halo 出现了两次,需要将它们删除并添加到另一个列表中,但问题是我已经有了以前使用的哈希码。
编辑:我要感谢大家的想法。我通过创建另一个对象类来解决这个问题,该对象类具有类似的 getter 和 setter,但具有更新的哈希码,并且它有效。下次我会使用更好的逻辑方法。我写这篇文章的主要目标是知道是否有任何方法可以在一个类中拥有多个哈希码和方法,这显然是不可能的。 :)
最佳答案
同一个类中不能有两个具有相同签名的方法,因此这是不可能的(这是 java 类/方法的常见原则,而不仅仅是 equals
和 hashcode
方法)。
正如Dennis Jia
所评论的,如果你遇到这种情况,你需要重新考虑你的设计。
关于java - 你可以有多个 hashcode 和 equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891831/