这是我的洞课
class Hole {
public int a;
public int b;
Hole(int a, int b) {
this.a = a;
this.b = b;
}
所以我添加了一个包含几个洞的ArrayList
public void checkPathLoop(int x, int y) {
//rough code
ArrayList<Hole> leftFlowInnerHole = new ArrayList<>();
//left holes rules
leftFlowInnerHole.add(new Hole(0, 1));
leftFlowInnerHole.add(new Hole(1, 5));
leftFlowInnerHole.add(new Hole(5, 4));
leftFlowInnerHole.add(new Hole(0, 4));
当我添加
Hole userInputHole = new Hole(0,1);
System.out.print(leftFlowInnerHole.contain(userInputHole));
它总是返回 false!它应该返回true。
有什么我想念的吗?
先感谢您
您需要覆盖equals
方法继承自Object
类(因此也hashCode
为了尊重合同,请参阅为什么我需要重写 Java 中的 equals 和 hashCode 方法? https://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-methods-in-java) 在你的Hole
class.
如果此列表包含指定元素,则返回 true。更多的
形式上,当且仅当此列表包含至少一个时返回 true
元素 e 使得 (o==null ? e==null : o.equals(e)
).
基本都是默认的equals
实施是一个==
两个对象之间的比较
public boolean equals(Object obj) {
return (this == obj);
}
由于您创建了两个不同的对象,虽然它们与属性具有相同的值,但它们是两个不同的对象,因此this == obj
回报false
.
如果你这样做:
Hole a = new Hole(0,1);
leftFlowInnerHole.add(a);
System.out.print(leftFlowInnerHole.contains(a));
你会看到它输出true
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)