Search code examples
javajava-stream

Stream filter add condition


How can I add a condition only when result.getExtendedAddress() exists using Lamdas?

Original condition:

.filter(result -> StringUtils.isNotBlank(title) && StringUtils.contains(result.getTitle().toLowerCase(), title.toLowerCase()))

New condition:

.filter(result -> StringUtils.isNotBlank(title) &&
                        (StringUtils.contains(result.getTitle().toLowerCase(), title.toLowerCase()) ||
                                ((result.getExtendedAddress()!= null) && (StringUtils.contains(result.getExtendedAddress().toLowerCase(), title.toLowerCase()))))

This new condition seems overly complicated and I would like to know if there is a better way to do it?


Solution

  • Thanks to @Thomas I was able to quickly find the solution using StringUtils.containsIgnoreCase(). The method is described here.

    Solution:

    .filter(result -> StringUtils.isNotBlank(title) &&
                            (StringUtils.containsIgnoreCase(result.getTitle(), title) ||
                                    StringUtils.containsIgnoreCase(result.getAdditionalAddress(), title)))