我正在尝试使用 stream().filter(...)
在 Java List 上执行不区分大小写的搜索。
我的搜索功能工作正常,但我还没有设法实现它在不区分大小写的情况下工作。我的函数看起来像这样:
public static List<License> searchByEverything(String keyword, String dealerid){
List<License> licenseDealerList = getLicensesByDealer(dealerid);
// org.apache.commons.lang3.StringUtils.containsIgnoreCase(keyword);
Predicate<License> licensePredicate = u -> u.name1.contains(keyword);
List<License> filteredList = licenseDealerList.stream().filter(licensePredicate).collect(Collectors.toList());
return filteredList;
}
如您所见,我尝试使用 apache 公共(public)库,但我不知道如何将它包含在我的 stream().filter(...)
中。我研究了一些不同的方法,但并没有真正理解如何将它们中的任何一种实现到我的方法中。在我的例子中,从对象值的字符串值执行搜索并返回一个对象非常重要。
我知道我可以使用类似 matchAny()
的东西来代替 filter()
但我不明白如何将它作为对象返回。
提前致谢
最佳答案
你可以使用 toLowerCase() :
u -> u.name1.toLowerCase().contains(keyword.toLowerCase());
这样两个值的大小写相同,您的搜索不区分大小写。
关于java - 使用 stream().filter() 在 java List 上执行不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753292/