使用stream()在java列表上执行大小写的敏感搜索.过滤器()

Eli*_*nes 1 java search list case-insensitive java-stream

我正在尝试使用Java列表执行敏感搜索stream().filter(...).

我的搜索功能工作正常但我没有设法实现这个工作没有区分大小写.我的函数看起来像这样:

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;
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到我试图使用apache commons库但我不知道如何将它包含在我的stream().filter(...).我研究了一些不同的方法,但并没有真正理解如何将它们中的任何一个实现到我的方法中.在我的情况下,从对象值的字符串值执行搜索并返回对象非常重要.

我知道我可以使用类似的东西matchAny()而不是filter()但我不明白如何将它作为一个对象返回.

提前致谢

JDC*_*JDC 9

你可以使用toLowerCase():

u -> u.name1.toLowerCase().contains(keyword.toLowerCase());
Run Code Online (Sandbox Code Playgroud)

这样,两个值都在相同的情况下,并且您的搜索是不区分大小写的.