Mục lục
Các List collection dùng để lưu trữ một tập dữ liệu dạng object trong Java. Do các object có thể mang giá trị NULL nên hoàn toàn một List sẽ có thể chứa một hoặc nhiều phần tử NULL. Việc chứa các phần tử NULL đôi lúc sẽ khiến mã xử lý quăng ra NullPointerException một cách vô hình khi chúng ta đang triển khai mã xử lý trên tập dữ liệu này.
Do vậy việc xóa các phần tử NULL trước khi xử lý dữ liệu trong một List sẽ góp phần ngăn chặn các lỗi tiềm ẩn.
Trong bài viết này chúng ta sẽ cùng nhau tìm ra các cách xóa những phần tử NULL trong List sử dụng Java cơ bản, hoặc là các thư viện bên thứ 3 cung cấp.
Xóa phần tử NULL trong List sử dụng Java core
Chúng ta hoàn toàn có thể sử dụng các code Java cơ bản để xóa các phần tử NULL trong List một cách dễ dàng.
import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(null); list.add(1); list.add(null); while (list.remove(null)); System.out.println(list); } }
Output: [1]
Xóa phần tử NULL trong List sử dụng Google Guava
Google Guava cũng là một trong các thư viện lớn hỗ trợ xóa các phần tử NULL trong List một cách dễ dàng và rõ nghĩa hơn.
import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(null); list.add(1); list.add(null); Iterables.removeIf(list, Predicates.isNull()); System.out.println(list); } }
Output: [1]
Xóa phần tử NULL trong List sử dụng Apache Common Collections
Apache commons collections cũng cung cấp một method tương tự như Guava
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.PredicateUtils; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(null); list.add(1); list.add(null); CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); System.out.println(list); } }
Output: [1]
Xóa phần tử NULL trong List sử dụng Stream API
Với sự phát triển của Stream API từ Java 8, đây cũng là một cách thường xuyên được sử dụng thay vì phải import các thư viện bên thứ 3 vào. Chúng ta chỉ cần dùng Stream#filter method để lọc ra các phần tử NULL trong List.
import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(null, 1, 2, null, 3, null); List<Integer> listWithoutNulls = list.parallelStream() .filter(Objects::nonNull) .collect(Collectors.toList()); System.out.println(listWithoutNulls); } }
Output: [1, 2, 3]
Nguồn
https://www.baeldung.com/java-remove-nulls-from-list