从列表容器中删除空值的Java程序
List 是一个有序的对象集合,允许按插入顺序存储重复值或空值。所以在很多场景中去除空值是非常重要的。
例子:
Input: [Geeks, null, forGeeks, null, A computer portal]
Output: [Geeks, forGeeks, A computer portal]
Input: [1, null, 2, 3, null, 4]
Output: [1, 2, 3, 4]
以下是从Java列表中删除空值的方法:
- 使用 List.remove() List 接口提供了一个预定义的方法remove(element) ,如果找到,该方法用于从 List 中删除单个出现的传递元素。
算法:
- 获取具有空值的列表。
- 对列表反复调用remove(null) ,直到所有空值都被删除。
- 返回/打印列表(现在删除了所有空值)。
// Java Program to remove nulls // from a List using List.remove() import java.util.*; class GFG { public static void main(String[] args) { // Create the list with null values List
list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using List.remove() // Repeatedly call remove() till all null are removed while (list.remove(null)) { } // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]
- 使用 List.removeAll() :List 接口提供了另一个预定义的方法removeAll(Collection) ,它用于从 List 中删除所有出现的 Collection 传递的元素,如果找到的话。
算法:
- 获取具有空值的列表。
- 使用Collections.singletonList(null)创建一个只有 null 作为元素的集合
- 对列表调用removeAll(Collection)一次。
- 返回/打印列表(现在删除了所有空值)。
// Java Program to remove nulls // from a List using List.removeAll() import java.util.*; class GFG { public static void main(String[] args) { // Create the list with null values List
list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using List.removeAll() // passing a collection with single element "null" list.removeAll(Collections.singletonList(null)); // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]
- 使用迭代器:迭代器是一个属于集合框架的接口。它允许用户遍历集合,访问数据元素并删除集合的数据元素。
算法:
- 获取具有空值的列表。
- 从列表中创建一个迭代器
- 使用创建的迭代器遍历 List 的每个元素
- 检查每个元素是否为空。如果找到 null,请在该元素上调用IteratorElement.remove() 。
- 返回/打印列表(现在删除了所有空值)。
程序:
// Java Program to remove nulls // from a List using iterator import java.util.*; class GFG { // Generic function to remove Null Using Iterator public static
List removeNullUsingIterator(List list) { // Create an iterator from the list Iterator itr = list.iterator(); // Find and remove all null while (itr.hasNext()) { if (itr.next() == null) itr.remove(); // remove nulls } // Return the null return list; } public static void main(String[] args) { // Create the list with null values List list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using iterator list = removeNullUsingIterator(list); // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]
- 使用 Guava Iterables removeIf() :Guava Iterables 类提供Iterables.removeIf(Iterable, Predicate)从满足提供的谓词的指定 Iterable(或实现 Iterable 的集合)中删除每个元素。
算法:
- 获取具有空值的列表。
- 获取 Predicate 条件Predicates.isNull()传入 removeIf() 的参数
- 调用Iterables.removeIf(List, Predicate)其中 List 是具有空值的原始列表,而 Predicate 是 Predicates.isNull() 实例。
- 返回/打印列表(现在删除了所有空值)。
// Java Program to remove nulls // from a List using Guava Iterables import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import java.util.*; class GFG { public static void main(String[] args) { // Create the list with null values List
list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using Guava Iterables // using Predicate condition isNull() Iterables.removeIf(list, Predicates.isNull()); // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]
- 使用 Apache Commons Collections filter() :Apache Commons Collections CollectionUtils 类提供了filter(Iterable, Predicate) ,它从指定的可迭代对象中删除不满足提供的谓词的每个元素。
算法:
- 获取具有空值的列表。
- 获取 Predicate 条件PredicateUtils.notNullPredicate()以传入 filter() 的参数,以便通过NotNull条件的元素保留在列表中,而所有其他元素都被过滤。
- 调用CollectionUtils.filter(list, PredicateUtils.notNullPredicate())其中 List 是具有空值的原始列表, Predicate 是 PredicateUtils.notNullPredicate() 实例。
- 返回/打印列表(现在删除了所有空值)。
程序:
// Java Program to remove nulls // from a List using Apache Common COllection Filter() import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.PredicateUtils; import java.util.*; class GFG { public static void main(String[] args) { // Create the list with null values List
list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using Apache Common filter() // using Predicate condition notNullPredicate() CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]
- 使用 Lambdas (Java 8) : Stream.filter()方法可以在Java 8 中使用,它返回一个由元素组成的流
匹配给定的谓词条件。算法:
- 获取具有空值的列表。
- 使用list.stream()从列表中创建一个 Stream
- 使用list.filter(x -> x != null)过滤不为空的元素流
- 使用.collect(Collectors.toList()将 Stream 作为列表收集回来
- 返回/打印列表(现在删除了所有空值)。
// Java Program to remove nulls // from a List using Apache Common COllection Filter() import java.util.stream.Collectors; import java.util.*; class GFG { public static void main(String[] args) { // Create the list with null values List
list = new ArrayList<>( Arrays.asList("Geeks", null, "forGeeks", null, "A computer portal")); // Print the list System.out.println("Initial List: " + list); // Removing nulls using Java Stream // using Predicate condition in lambda expression list = list.stream() .filter(x -> x != null) .collect(Collectors.toList()); // Print the list System.out.println("Modified List: " + list); } } 输出:Initial List: [Geeks, null, forGeeks, null, A computer portal] Modified List: [Geeks, forGeeks, A computer portal]