Friday, September 5, 2025
HomeLanguagesJavaRemove elements from a List that satisfy given predicate in Java

Remove elements from a List that satisfy given predicate in Java

Below are the methods to efficiently remove elements from a List satisfying a Predicate condition:
 

p  ==> Predicate, specifying the condition
l  ==> List, from which element to be removed

 

Using iterator

Below program demonstrates the removal of null elements from the list, using the Predicate 
 

Java




// Java Program to remove nulls
// from a List using iterator and Predicate
import java.util.function.Predicate;
import java.util.*;
 
class GFG {
 
    // Generic function to remove Null Using Iterator
    public static <T> List<T>
    removeNullUsingIterator(List<T> l, Predicate<T> p)
    {
 
        // Create an iterator from the l
        Iterator<T> itr = l.iterator();
 
        // Find and remove all null
        while (itr.hasNext()) {
 
            // Fetching the next element
            T t = itr.next();
 
            // Checking for Predicate condition
            if (!p.test(t)) {
 
                // If the condition matches,
                // remove that element
                itr.remove();
            }
        }
 
        // Return the null
        return l;
    }
 
    public static void main(String[] args)
    {
 
        // Create the l with null values
        List<String> l = new ArrayList<>(
               Arrays.asList("Geeks",
                             null,
                             "forGeeks",
                             null,
                             "A computer portal"));
 
        // Print the list
        System.out.println("List with null values: " + l);
 
        // Creating a Predicate condition checking for null
        Predicate<String> isNull = item -> Objects.nonNull(item);
 
        // Removing nulls using iterator and Predicate
        l = removeNullUsingIterator(l, isNull);
 
        // Print the list
        System.out.println("List with null values removed: " + l);
    }
}


Output

List with null values: [Geeks, null, forGeeks, null, A computer portal]
List with null values removed: [Geeks, forGeeks, A computer portal]

Time complexity : O(N^2)

Space complexity: O(N)

Using List.removeAll()

In this method, a collection containing elements to be removed is used to remove those elements from the original l. It requires creating a collection with the required elements using a Predicate condition. After doing this, the original l is searched for this collection and all instances of it are removed.
 

Java




// Java Program to remove 10
// from a List using List.removeAll() and Predicate
import java.util.function.Predicate;
import java.util.*;
 
class GFG {
 
    // Generic function to remove elements using Predicate
    public static <T> List<T>
    removeElements(List<T> l, Predicate<T> p)
    {
 
        // Create collection using Predicate
        Collection<T> collection = new ArrayList<>();
 
        for (T t : l) {
            if (p.test(t)) {
                collection.add(t);
            }
        }
 
        // Print the list
        System.out.println("Collection to be removed: " + collection);
 
        // Removing 10 using List.removeAll()
        // passing a collection
        l.removeAll(collection);
 
        // Return the list
        return l;
    }
 
    public static void main(String[] args)
    {
 
        // Create a list with null values
        List<String> l = new ArrayList<>(
            Arrays.asList("1", "10", "15", "10", "12", "5", "10", "20"));
 
        // Print the list
        System.out.println("Original List: " + l);
 
        // Creating a Predicate condition checking for 10
        Predicate<String> is10 = i -> (i == "10");
 
        // Removing using Predicate
        l = removeElements(l, is10);
 
        // Print the list
        System.out.println("Updated List: " + l);
    }
}


Output

Original List: [1, 10, 15, 10, 12, 5, 10, 20]
Collection to be removed: [10, 10, 10]
Updated List: [1, 15, 12, 5, 20]

 

Using Lambdas (Java 8)

Stream.filter() method can be used in Java 8 that returns a stream consisting of the elements 
that match the given predicate condition.
 

Java




// Java Program to remove nulls
// from a List using Java 8
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.*;
 
class GFG {
 
    // Generic function to remove elements using Predicate
    public static <T> List<T>
    removeElements(List<T> l, Predicate<T> p)
    {
 
        // Removing nulls using Java Stream
        // using Predicate condition in lambda expression
        l = l.stream()
                   .filter(p)
                   .collect(Collectors.toList());
 
        // Return the list
        return l;
    }
 
    public static void main(String[] args)
    {
 
        // Create a list with null values
        List<String> l = new ArrayList<>(
            Arrays.asList("Geeks",
                          null,
                          "forGeeks",
                          null,
                          "A computer portal"));
 
        // Print the list
        System.out.println("List with null values: " + l);
 
        // Creating a Predicate condition checking for null
        Predicate<String> isNull = i -> (i != null);
 
        // Removing using Predicate
        l = removeElements(l, isNull);
 
        // Print the list
        System.out.println("List with null values removed: " + l);
    }
}


Output

List with null values: [Geeks, null, forGeeks, null, A computer portal]
List with null values removed: [Geeks, forGeeks, A computer portal]

Using removeIf()

As the name suggests, it is a direct method to remove all elements that satisfy the given predicate.
 

Java




// Java Program to remove nulls
// from a List using Java 8
import java.util.function.Predicate;
import java.util.*;
 
class GFG {
 
    // Generic function to remove elements using Predicate
    public static <T> List<T>
    removeElements(List<T> l, Predicate<T> p)
    {
 
        // Removing nulls using Java Stream
        // using Predicate condition in removeIf()
        l.removeIf(x -> p.test(x));
 
        // Return the list
        return l;
    }
 
    public static void main(String[] args)
    {
 
        // Create a list with null values
        List<String> l = new ArrayList<>(
            Arrays.asList("Geeks",
                          null,
                          "forGeeks",
                          null,
                          "A computer portal"));
 
        // Print the list
        System.out.println("List with null values: " + l);
 
        // Creating a Predicate condition checking for null
        Predicate<String> isNull = i -> (i == null);
 
        // Removing using Predicate
        l = removeElements(l, isNull);
 
        // Print the list
        System.out.println("List with null values removed: " + l);
    }
}


Output

List with null values: [Geeks, null, forGeeks, null, A computer portal]
List with null values removed: [Geeks, forGeeks, A computer portal]
RELATED ARTICLES

Most Popular

Dominic
32265 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6634 POSTS0 COMMENTS
Nicole Veronica
11801 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11863 POSTS0 COMMENTS
Shaida Kate Naidoo
6752 POSTS0 COMMENTS
Ted Musemwa
7025 POSTS0 COMMENTS
Thapelo Manthata
6703 POSTS0 COMMENTS
Umr Jansen
6718 POSTS0 COMMENTS