Просмотрите Поток
, содержащий нулевые
значения.
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) { Streamlanguage = Stream.of("java", "python", "node", null, "ruby", null, "php"); List result = language.collect(Collectors.toList()); result.forEach(System.out::println); } }
выход
java python node null // <--- NULL ruby null // <--- NULL php
Решение
Чтобы решить эту проблему, используйте Stream.filter(x->)
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) { Streamlanguage = Stream.of("java", "python", "node", null, "ruby", null, "php"); //List result = language.collect(Collectors.toList()); List result = language.filter(x -> x!=null).collect(Collectors.toList()); result.forEach(System.out::println); } }
выход
java python node ruby php
В качестве альтернативы можно выполнить фильтрацию с помощью Объектов::NonNull
import java.util.List; Listresult = language.filter(Objects::nonNull).collect(Collectors.toList());
Рекомендации
Оригинал: “https://mkyong.com/java8/java-8-filter-a-null-value-from-a-stream/”