You need to override the equals
method herited from the Object
class (and hence also hashCode
to respect the contract, see Why do I need to override the equals and hashCode methods in Java? ) in your Hole
class.
Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (
o==null ? e==null : o.equals(e)
).
Basically the default equals
implementation is an ==
comparison between the two objects
public boolean equals(Object obj) {
return (this == obj);
}
Since you created two different objects, while they have the same value as attributes they're two distincts objects and hence this == obj
returns false
.
If you did :
Hole a = new Hole(0,1);
leftFlowInnerHole.add(a);
System.out.print(leftFlowInnerHole.contains(a));
You'll see that it outputs true
.