Рубрики
Без рубрики

Java 8 – Фильтрация нулевого значения из потока

– Java 8 – Фильтрация нулевого значения из потока

Просмотрите Поток , содержащий нулевые значения.

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 language = 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) {

        Stream language = 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;

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

Рекомендации

  1. Объекты::Ненулевой JavaDoc
  2. Примеры фильтров потоков Java 8
  3. Java 8 Коллекторы JavaDoc

Оригинал: “https://mkyong.com/java8/java-8-filter-a-null-value-from-a-stream/”