ListIterator.remove() method removes the last element from the list that was returned by next() or previous() cursor positions. It can be called only once per call to next or previous. It can be made only if the operation — add(E) has not called after the last call to next or previous.
Internal working in ArrayList is shown below be its removal or addition of elements to it. Considering generic removal of elements prior to the switch to ListIterator.
Syntax:
listIterator.remove();
- Index to be removed
- Index value to be removed
Illustration:
Input: ArrayList = [“Red”, “White”, “Blue”, “Pink”]
Output: ArrayList = [“Red”, “Blue”, “Pink”]
Remove element “White” or 2nd element in the ArrayList.
Input: ArrayList = [“Red”, “White”, “Blue”, “Pink”]
Output : ArrayList = [“Red”, “White”, “Blue”, “Pink”]
Remove element “Black” or 5th element in the ArrayList. Since the element that has to be removed is not in the ArrayList so nothing will be removed.
Procedure: To Remove an element from ArrayList using ListIterator is as follows:
- Create ArrayList instance new ArrayList<String>();
- Add elements in ArrayList colors using colors.add(“Red”);
- Create ListIterator instance of colors.listIterator();
- Print list elements before removing elements.
- Increment the iterator by listIterator.next() and move to element which you want to remove;
- Remove the element by listIterator.remove();
- Print the list after removing the element. In this example, we have removed the element “White.
State transactions while deleting an element from ArrayList
Case 1: Using loops if the index of the element to be removed is known
Java
// Java Program to Remove an element from ArrayList // using ListIterator // Importing ArrayList and ListIterator classes // of java.util package import java.util.ArrayList; import java.util.ListIterator; public class GFG { // Main driver method public static void main(String[] args) { // Create an ArrayList ArrayList<String> colors = new ArrayList<String>(); // Add elements to above ArrayList colors.add( "Red" ); colors.add( "White" ); colors.add( "Blue" ); colors.add( "Pink" ); colors.add( "Black" ); colors.add( "Green" ); // ArrayList ={Red, White, Blue, Pink, Black, Green} ListIterator<String> listIterator = colors.listIterator(); System.out.println( "List Before remove() method = " + colors); // Removing ith element from ArrayList // using listiterator // Suppose i = 3, so traversing // till that element for ( int i = 0 ; i < 3 ; i++) { listIterator.next(); } // Removes one more element from list // 'blue' element is removed from arraylist listIterator.remove(); // Printing the final ArrayList after removing // elements from originally created ArrayList System.out.println( "List After remove() method = " + colors); } } |
List Before remove() method = [Red, White, Blue, Pink, Black, Green] List After remove() method = [Red, White, Pink, Black, Green]
Time Complexity: O(n)
Auxiliary Space: O(1)
As constant extra space is used.
Case 2: If the element to be removed is known
Iterator/traverse over the ArrayList and increment the list Iterator. If we reached the required element then break the loop else we reach the end and nothing will be deleted.
Java
// Java Program to Remove an element from ArrayList // using ListIterator // Importing ArrayList and ListIterator classes // of java.util package import java.util.ArrayList; import java.util.ListIterator; public class GFG { // Main driver method public static void main(String[] args) { // Create an ArrayList ArrayList<String> colors = new ArrayList<String>(); // Adding elements to the arraylist colors.add( "Red" ); colors.add( "White" ); colors.add( "Blue" ); colors.add( "Pink" ); colors.add( "Black" ); colors.add( "Green" ); ListIterator<String> listIterator = colors.listIterator(); // Print the original ArrayList created System.out.println( "List Before remove() :- " + colors); // we want to remove Blue element from the arraylist for (String it : colors) { listIterator.next(); // if we reached to required element break the // loop if (it == "Blue" ) break ; } // remove color blue from arraylist listIterator.remove(); System.out.println( "List After remove():- " + colors); } } |
List Before remove() :- [Red, White, Blue, Pink, black, green] List After remove():- [Red, White, Pink, black, green]
Time Complexity: O(n)
Auxiliary Space: O(1)
As constant extra space is used.