java - 调节 java 流的过滤器

标签 java java-8 java-stream

我正在开发一个过滤器函数,它可以使用许多参数进行过滤,为此我正在使用 Java Streams。这就是我的代码:

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()));
}

我想看看一个或多个参数 cours,salle,prof,group 是否为 null 或者它的 trim () = "",不值得用它来过滤,因为结果不是我期望得到的。

但是我不知道该怎么做。

最佳答案

您可以创建一个方法来在过滤期间处理 null 或空字符串,如下所示:

public static boolean compareNullableString(String str, String filterStr) {

    return (filterStr == null || filterStr.trim().equals("")) ? true : filterStr.equalsIgnoreCase(str);

}

然后修改您的代码,例如:

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

关于java - 调节 java 流的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731768/

相关文章:

java - 如何确定关闭我的 Java 应用程序的原因?

java - for 循环中 if 语句中的 return 语句之后会发生什么

java - MySQL 更新语句不起作用

java - 使用 Java Stream 条件映射到新对象

java - 如何从一个流中过滤不包含在另一个梦中的字符串?

java - 实现减少操作以找到数字的最大差异?

Java 8 : Converting an array of strings to have first character in uppercase and sorted order

java - 在Java中,当executorservice可能向自身提交其他任务时,如何关闭它

java - Android - 索引 1 无效,大小为 1 - 超出范围

scala - 如何在 ScalaTest 中使用 ScriptEngine