используя anyMatch и lambdas для проверки коллекции в java

У меня есть метод, называемый isValidDataStreamsгде я проверяю, если кто-либо из членов моей коллекции DataStreamнарушает чек, который у меня есть isNotEmpty.

public class MyClass {
    private Collection<DataStream> DataStreams;

    /* checking ManifestTemplate/DataStreams */
    public boolean isValidDataStreams()
    {
        if ( getDataStreams().isEmpty() )
            return false;

        for( DataStream dataStream : DataStreams )
        {
            if ( DataStream == null || 
                 !isNotEmpty(DataStream.getAlias() ) || 
                 !isNotEmpty(DataStream.getFilePath() ) ) {
                return false;
            }
        }
        return true;
    }
}

public class DataStream {
    private String alias;
    private String filePath;
}

У меня такое чувство, что этот код выглядит немного уродливым. Можно ли использовать лямбда и сделать этот код лучше, что-то вроде

List<String> test = Arrays.asList("a", "b", null, "c", "d");

        if (test == null) {
            return;
        }

        if (test.stream().anyMatch( x -> { System.out.println( x ); return x == null; } ) ) 
        {
            System.out.println( "dsaflasdk" );
        }

Я попытался заменить его следующим образом.

public boolean isValidDataStreamsLambda()
    {
        if ( getDataStreams().isEmpty() )
            return false;

        if(dataStreams.stream().anyMatch( x -> {!isNotNullAndEmpty(x.getAlias() ) || 
            !isNotNullAndEmpty(x.getFilePath())} ))
        {
            return false;
        }
        return true;
    }

Но это дает мне следующую ошибку

Никакое исключение типа boolean не может быть выбрано; тип исключения должен быть подклассом Throwable

java,collections,lambda,java-8,

0

Ответов: 1


0

Метод проверки, что все объекты DataStream, хранящиеся в списке, имеют свои значения «alias» и «filePath», которые правильно установлены:

  public static boolean isValidDataStreamsLambda(List<DataStream> dataStreamList) {
     return dataStreamList.stream()
        .filter(d-> d != null && d.getAlias() != null && d.getFilePath() != null && !d.getAlias().isEmpty() && !d.getFilePath().isEmpty())
        .count() == dataStreamList.size();
  }
Java, коллекция, лямбда, ява-8,
Похожие вопросы