[Java 8] Loại bỏ các giá trị null trong Stream

Chào các bạn, trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách loại bỏ các giá trị null trong Stream

Ví dụ về một Stream có chứa các giá trị null

Java8Examples.java
Java:
package com.mkyong.java8;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Java8Examples {

    public static void main(String[] args) {

        Stream<String> language = Stream.of("java", "python", "node", null, "ruby", null, "php");

        List<String> result = language.collect(Collectors.toList());

        result.forEach(System.out::println);

    }
}
Kết quả
Code:
java
python
node
null   // <--- NULL
ruby
null   // <--- NULL
php
Giải pháp
Để giải quyết vấn đề này, ta sử dụng Stream.filter(x -> x!=null)

Java8Examples.java
Java:
package com.mkyong.java8;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Java8Examples {

    public static void main(String[] args) {

        Stream<String> language = Stream.of("java", "python", "node", null, "ruby", null, "php");

        //List<String> result = language.collect(Collectors.toList());

        List<String> result = language.filter(x -> x!=null).collect(Collectors.toList());

        result.forEach(System.out::println);


    }
}
Kết quả
Code:
java
python
node
ruby
php
Hoặc, sử dụng Objects::nonNull
Java:
import java.util.List;

    List<String> result = language.filter(Objects::nonNull).collect(Collectors.toList());

Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :)

Bài viết tham khảo tại: https://mkyong.com/java8/java-8-filter-a-null-value-from-a-stream
 

Bình luận