下面是有效地从满足谓词条件的列表中删除元素的方法:
p==>
Predicate, specifying the conditionl==>
List, from which element to be removed
使用迭代器
下面的程序演示了使用谓词从列表中删除空元素
// 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]
使用List.removeAll()
在此方法中, 包含要删除元素的集合用于从原始l中删除那些元素。它要求使用谓词条件创建具有所需元素的集合。完成此操作后, 将在原始l中搜索此集合, 并删除其所有实例。
// 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(Java 8)
可以在Java 8中使用Stream.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 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]
推荐阅读
- CSS attr()函数代码简单示例
- 算法题(100头牛和牛奶问题)
- AngularJS ng-bind指令用法详细指南
- Python(将字典作为参数传递给函数)
- Scala中的数据类型详细介绍和解释
- Golang中的嵌套结构代码示例解释
- 亚马逊面试体验(AmazonWow)
- PHP IntlChar::charDigitValue()函数用法指南
- PHP Ds PriorityQueue clear()函数用法介绍