How can I remove specific object from ArrayList? Suppose I have a class as below:
import java.util.ArrayList;
public class ArrayTest {
int i;
public static void main(String args[]){
ArrayList<ArrayTest> test=new ArrayList<ArrayTest>();
ArrayTest obj;
obj=new ArrayTest(1);
test.add(obj);
obj=new ArrayTest(2);
test.add(obj);
obj=new ArrayTest(3);
test.add(obj);
}
public ArrayTest(int i){
this.i=i;
}
}
How can I remove object with new ArrayTest(1)
from my ArrayList<ArrayList>
The List provides removeAll() method to remove all elements of a list that are part of the collection provided.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With