Acondicionamiento de los filtros de un flujo de Java

Estoy trabajando en una función de filtro que puede filtrar con muchos parámetros y para ello estoy usando Java Streams. Entonces ese es mi código:

public void filter(String cours,String prof,String salle,String group) {

this.appointments().addAll(getTimeTable().getCreneauxsList().stream()
            .filter(e->e.getProf().equalsIgnoreCase(prof) )
            .filter(e->e.getCours().equalsIgnoreCase(cours) )
            .filter(e->e.getSalle().equalsIgnoreCase(salle) )
            .filter(e->e.getGroup().equalsIgnoreCase(group) )
            .collect(Collectors.toList()));
}

Quiero ver si uno o varios de los parámetros cours, salle, prof, group son nulos o trim () = "", no vale la pena filtrarlo porque el resultado no es el que esperaba obtener.

Pero no sé cómo hacerlo.

Respuesta 1

Puedes usar Strings.isNullOrEmpty()de guayaba:

boolean isNullOrEmpty = Strings.isNullOrEmpty(e.getProf());

O hay un conjunto de métodos de apache commons:

StringUtils.isBlank, StringUtils.isNotBlank, StringUtils.isEmpty,StringUtils.isNotEmpty

Esto podría ser útil: StringUtils.isBlank () vs String.isEmpty ()

Es su caso isNotBlankexactamente lo que está buscando:

BiPredicate<String, String> myPredicate = (field, eqString) ->
        StringUtils.isNotBlank(field) && field.equalsIgnoreCase(eqString);

    ...
    .filter(e -> myPredicate.test(e.getProf(), prof))
    .filter(e -> myPredicate.test(e.getCours(), cours))
    .filter(e -> myPredicate.test(e.getSalle(), salle))
    .filter(e -> myPredicate.test(e.getGroup(), group))
    ...
Respuesta: 2

¿Hay alguna diferencia en la eficiencia entre los 2 fragmentos de código a continuación? ¿El primero requiere que asigne memoria para el objeto? Clase c = a.getClass (); if (str! = null) c.dosomething (c ....

Parece que puedo guardar algunas preferencias de usuario usando java.util.prefs.Preferences. Las preferencias están vinculadas a las clases específicas: obtengo una instancia de Preferencias al pasar un objeto de clase a ...

Tengo un problema con el subinforme utilizando javaflow con Jasperreport 6.7.0 de acuerdo con la Guía definitiva de JasperReports - Teodor Danciu, Lucian Chirita, página 130. Lo necesito para evitar diferentes ...

Los JSP / servlets son algo que me gustaría aprender, así que me puse a crear mi primera aplicación tomcat. He seguido el tutorial de apache aquí y he progresado para intentar instalar mi aplicación ...