How to remove specific object from ArrayList in Java?
ArrayList
removes objects based on the equals(Object obj)
method. So you should implement properly this method. Something like:
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj == this) return true;
if (!(obj instanceof ArrayTest)) return false;
ArrayTest o = (ArrayTest) obj;
return o.i == this.i;
}
Or
public boolean equals(Object obj) {
if (obj instanceof ArrayTest) {
ArrayTest o = (ArrayTest) obj;
return o.i == this.i;
}
return false;
}
If you are using Java 8 or above:
test.removeIf(t -> t.i == 1);
Java 8 has a removeIf
method in the collection interface. For the ArrayList, it has an advanced implementation (order of n).
In general an object can be removed in two ways from an ArrayList
(or generally any List
), by index (remove(int)
) and by object (remove(Object)
).
In this particular scenario: Add an equals(Object)
method to your ArrayTest
class. That will allow ArrayList.remove(Object)
to identify the correct object.