Java List remove()
method is used to remove elements from the list. ArrayList
is the most widely used implementation of the List interface, so the examples here will use ArrayList
remove()
methods.
remove()
MethodsThere are two remove()
methods to remove elements from the List.
E remove(int index)
: This method removes the element at the specified index and returns it. The subsequent elements are shifted to the left by one place. This method throws IndexOutOfBoundsException
if the specified index is out of range. If the list implementations does not support this operation, UnsupportedOperationException
is thrown.boolean remove(Object o)
This method removes the first occurrence of the specified Object
. If the list doesn’t contain the given element, it remains unchanged. This method returns true
if an element is removed from the list, otherwise false
. If the object is null
and list doesn’t support null
elements, NullPointerException is thrown. UnsupportedOperationException
is thrown if the list implementation doesn’t support this method.Let’s look into some examples of remove()
methods.
This example will explore E remove(int index)
:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
String removedStr = list.remove(1);
System.out.println(list);
System.out.println(removedStr);
First, this code constructs and prints a list:
Output[A, B, C, C, B, A]
Then, this code executes remove(1)
to remove the element at index 1
. Finally, it prints the new resulting list and also prints the removed element.
Output[A, C, C, B, A]
B
The B
at index 1
has been removed.
IndexOutOfBoundsException
with remove(int index)
MethodThis example will explore E remove(int index)
when the index exceeds the list:
List<String> list = new ArrayList<>();
list.add("A");
String removedStr = list.remove(10);
This code constructs a list with a length of 1
. However, when the code attempts to remove the element at index 10
:
OutputException in thread "main" java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.remove(ArrayList.java:535)
at com.journaldev.java.ArrayListRemove.main(ArrayListRemove.java:19)
This attempt throws the IndexOutOfBoundsException
.
remove()
UnsupportedOperationException
ExampleThe List.of()
method creates an immutable list, which can’t be modified.
List<String> list = List.of("a", "b");
System.out.println(list);
String removedStr = list.remove(1);
System.out.println(removedStr);
First, this code constructs and prints an immutable list:
- Output[a, b]
Then the code attempts to use the remove()
method to remove the element at index 1
:
- Exception in thread "main" java.lang.UnsupportedOperationException
- at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
- at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
- at TestRemoveList.main(TestRemoveList.java:12)
This attempt throws UnsupportedOperationException
. It will also throw UnsupportedOperationException
if you attempt list.remove("a")
or list.remove("b")
.
This example will explore boolean remove(Object o)
:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
boolean isRemoved = list.remove("C");
System.out.println(list);
System.out.println(isRemoved);
isRemoved = list.remove("X");
System.out.println(list);
System.out.println(isRemoved);
First, this code constructs and prints a list:
Output[A, B, C, C, B, A]
Then, this code executes remove("C")
to remove the first instance of C
. Next, it prints the resulting list and also prints the boolean value of the operation - true
:
Output[A, B, C, B, A]
true
Then, this code executes remove("X")
, but there is no instance of X
in the list, the list does not change. Finally, it prints the list and also prints the boolean value of the operation - false
:
Output[A, B, C, B, A]
false
In this article, you learned about Java’s List
method remove()
.
Recommended Reading:
References:
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
why gives me a compile error which it tell cannot find the symbol
- Danuja
Thanks for this post…it helps.
- Possible