You should always use remove(index) to delete object, if you are not iterating, otherwise always use Iterator's remove() method for removing object from ArrayList.
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("ArrayList contains : " + numbers);
// Calling remove(index)
numbers.remove(1); //removing object at index 1 i.e. 2nd Object, which is 2
//Calling remove(object)
numbers.remove(new Integer(3));
System.out.println("ArrayList After : " + numbers);
}
}
ArrayList contains : [1, 2, 3]
ArrayList After : [1]
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(100);
numbers.add(201);
numbers.add(300);
numbers.add(401);
System.out.println("ArrayList Before : " + numbers);
Iterator<Integer> itr = numbers.iterator(); // remove all even numbers
while (itr.hasNext()) {
Integer number = itr.next();
if (number % 2 == 0) {
itr.remove();
/* not numbers.remove(number);
Otherwise this will create ConcurrentModificationException*/
}
}
System.out.println("ArrayList After : " + numbers);
}
ArrayList Before : [100, 201, 300, 401]
ArrayList After : [201, 401]