This is my Hole Class
class Hole {
public int a;
public int b;
Hole(int a, int b) {
this.a = a;
this.b = b;
}
So i adding an ArrayList that contain several several hole
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));
when i add
Hole userInputHole = new Hole(0,1);
System.out.print(leftFlowInnerHole.contain(userInputHole));
it always return false !! it suppose to return true.
Is there anything i miss ??
Thank you in advance
You need to override the
equals
method herited from theObject
class (and hence alsohashCode
to respect the contract, see Why do I need to override the equals and hashCode methods in Java? ) in yourHole
class.Basically the default
equals
implementation is an==
comparison between the two objectsSince you created two different objects, while they have the same value as attributes they're two distincts objects and hence
this == obj
returnsfalse
.If you did :
You'll see that it outputs
true
.