How to remove an element from ArrayList in Java?

4 Best Ways to Remove Item from ArrayList:

Learn How to remove an element from ArrayList in Java in this post. We can remove the elements from ArrayList using index or its value using following methods of ArrayList.


1) remove(int index): Takes the index of the element
2) remove(Object o): Takes actual value present in the arraylist.
3) removeIf(Predicate<? super E> filter): which takes the predicate that means if the value is matches to the specified object then it will be removed.
4) void remove(): Removes the current element at the time of iteration.

First 3 methods are from ArrayList and last method is from Iterator interface.


How to remove an element from ArrayList in Java



1) remove(int index):

Removes the element at the specified position in this list. Shifts any subsequent elements to the left (subtracts one from their indices).

IndexOutOfBoundsException will be thrown if the index is out of range (index < 0 || index >= size())

In ArrayList, Index starts from zero.  In the below example program, We will delete the values from index 1 and 2. See the output.


package examples.java.w3schools.arraylist;

import java.util.ArrayList;
import java.util.List;

public class ArrayListRemove {

public static void main(String[] args) {

// Creating arraylist
List values = new ArrayList();

// Adding values to ArrayList
values.add(100);
values.add(200);
values.add(300);
values.add(400);
values.add(500);
values.add(1);
values.add(2);

// Printing the values before removal
System.out.println("Printing the values before removal " + values);

// Removing based on the index
// Index starts from zero. Removing at index 2
values.remove(1);

// Removing at index 3
values.remove(2);

System.out.println("Printing the values after removal " + values);

}
}


Output:

The above program produces this output. Observe the output that deleted the values at index 1 and 2. All next elements moved towards left.


Printing the values before removal [100, 200, 300, 400, 500, 1, 2]
Printing the values after removal [100, 300, 500, 1, 2]


2) remove(Object o):


Removes the element for the given Object in this list. Shifts any subsequent elements to the left (subtracts one from their indices).

If the specified object appears in the list multiple times then removes the first occurrence of the specified element from this list, if it is present.

If the list does not contain the element, it is unchanged. More formally, removes the element with the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))) (if such an element exists). Returns true if this list contained the specified element (or equivalently, if this list changed as a result of the call).

In the below example program, We are passing the wrapper integer objects to remove the actual values of 1 and 2 from arraylist.


package examples.java.w3schools.arraylist;

import java.util.ArrayList;
import java.util.List;

public class ArrayListRemove {

public static void main(String[] args) {

// Creating arraylist
List values = new ArrayList();

// Adding values to ArrayList
values.add(100);
values.add(200);
values.add(300);
values.add(400);
values.add(500);
values.add(1);
values.add(2);

// Printing the values before removal
System.out.println("Printing the values before removal " + values);

// Removing based on the index
// Removing the value 1
values.remove(new Integer(1));

// Removing the value 2
values.remove(new Integer(2));

System.out.println("Printing the values after removal " + values);

}
}


Output:


The above program produces this output.
In this example, ArrayList invokes the remove method which takes the object as parameter and removes the those values from it. Observe the output, values 1 and 2 are deleted from arraylist and the input list holds remain values 100, 200, 300, 400, 500.

Printing the values before removal [100, 200, 300, 400, 500, 1, 2]
Printing the values after removal [100, 200, 300, 400, 500]


3) removeIf(Predicate<? super E> filter): 

Removes all of the elements of this collection that satisfy the given predicate. Errors or runtime exceptions thrown during iteration or by the predicate are relayed to the caller.


We can pass the any pattern inside predicate function such as string equals, toUppercase, startsWith, endsWith etc.




public class ArrayListRemove {

public static void main(String[] args) {

// Creating arraylist
List values = new ArrayList();

// Adding values to ArrayList
values.add("One");
values.add("Two");
values.add("Three");
values.add("Four");
values.add("Five");

// Printing the values before removal
System.out.println("Printing the values before removal " + values);

// calling predicate removeIf method.
values.removeIf(value -> value.startsWith("T"));

System.out.println("Printing the values after removal " + values);
}
}

Output:

The above program produces this output.
Input ArrayList takes Strings and predicate function value.startsWith("T") that checks the string startsWith "T" and delete if condition is true.


Printing the values before removal [One, Two, Three, Four, Five]
Printing the values after removal [One, Four, Five]


4) void remove():




This remove method is from interface Iterator

This method removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to next(). The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.




// Printing the values before removal
System.out.println("Printing the values before removal " + values);

// Iterating Iterator.

Iterator it = values.iterator();
while (it.hasNext()) {
String value = (String) it.next();
if (value.equals("Four")) {
it.remove();
}
}

System.out.println("Printing the values after removal " + values);





Output:


The above program produces this output. Here, calling the remove method on the iterator object and If we remove from iterator, the underlying arraylist will be modified. see the below output.


Printing the values before removal [One, Two, Three, Four, Five]
Printing the values after removal [One, Two, Three, Five]




0 Comments