Кондиционирование фильтров потока Java - PullRequest
0 голосов
/ 17 февраля 2019

Я работаю над функцией фильтра, которая может фильтровать множество параметров, и для этого я использую потоки Java.Вот мой код:

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 () = "", фильтровать его не стоитэто потому, что результат не тот, который я ожидал получить.

Но я не знаю, как это сделать.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Вы можете использовать Strings.isNullOrEmpty() из guava:

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

Или существует набор методов из Apache Commons:

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

Это может быть полезно: StringUtils.isBlank() против String.isEmpty ()

Это ваш случай isNotBlank именно то, что вы ищете:

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))
    ...
0 голосов
/ 17 февраля 2019

Вы можете создать метод для обработки пустой или пустой строки во время фильтрации, как показано ниже:

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