1
votes

Comment retourner false si la collection est nulle avant le flux dans Java 8?

J'ai écrit le code ci-dessous pour vérifier certaines conditions.

/**
 * Returns true if any of the dose detail is an x
 * @return boolean
 */
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
    return dds.stream().anyMatch(dd -> dd.M().K());
}

mais cette méthode a des risques de dds, qui sont nuls. Je dois retourner false est dd également nul. comment peut-on modifier cette méthode en utilisant java 8 en null safe?


0 commentaires

3 Réponses :


2
votes

Cela pourrait être aussi simple que

public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
    return dds == null ? false : dds.stream().anyMatch(dd -> dd.M().K());
}


1 commentaires

Vous n'avez jamais besoin de combiner littéralement true ou false avec une autre expression booléenne ; il y a toujours une alternative sans elle. Ici, il suffit de retourner dds! = Null && dds.stream (). AnyMatch (dd -> dd.M (). K ());



2
votes

Vous pouvez également l'envelopper autour d'un Facultatif comme:

public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
    return Optional.ofNullable(dds)
            .filter(d -> d.stream().anyMatch(dd -> dd.M().K()))
            .isPresent();
}


0 commentaires

6
votes

Ou vous pouvez faire comme ça. Plus ou plus de la même manière

return dds != null && dds.stream().anyMatch(dd -> dd.M().K());


0 commentaires