复习一个Stream
包含 null
数据的例子.
Java8Examples.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);
-
-
}
-
}
output
java
python
node
null // <--- NULL
ruby
null // <--- NULL
php
Solution(解决)
为了解决上面的问题,我们使用: Stream.filter(x -> x!=null)
Java8Examples.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);
-
-
-
}
-
}
output
java
python
node
ruby
php
另外,过滤器还可以用: Objects::nonNull
-
import java.util.List;
-
-
List<String> result = language.filter(Objects::nonNull).collect(Collectors.toList());
References
- Objects::nonNull JavaDoc
- Java 8 Streams filter examples
- Java 8 Collectors JavaDoc