从满足Java中给定谓词的列表中删除元素

以下是从满足谓词条件的列表中有效删除元素的方法:

null
p  ==> Predicate, specifying the conditionl  ==> List, from which element to be removed

使用迭代器

下面的程序演示了如何使用谓词从列表中删除空元素

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);
}
}


输出

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

使用列表。removeAll()

在这种方法中,包含要删除的元素的集合用于从原始l中删除这些元素。它需要使用谓词条件创建包含所需元素的集合。执行此操作后,将在原始l中搜索此集合,并删除其所有实例。

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);
}
}


输出

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

使用Lambdas(Java8)

流动在Java 8中可以使用filter()方法,该方法返回由元素组成的流 匹配给定谓词条件的。

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);
}
}


输出

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

使用removeIf()

顾名思义,它是删除所有满足给定谓词的元素的直接方法。

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);
}
}


输出

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

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享