当前,我正在使用以下代码在映射中创建过滤器以匹配并提供过滤后的结果集列表。
final Map filteredMap = Maps.filterKeys(mymap, Predicates.containsPattern("^Xyz"));
但是 Guava Predicates.containsPattern 进行区分大小写的匹配。
我应该如何使用 containsPattern 进行不区分大小写的匹配。
最佳答案
采用
Predicates.contains(Pattern.compile("^Xyz", Pattern.CASE_INSENSITIVE))
而是作为谓词。请参阅核心 Java
Pattern
和 Predicates.contains
.编辑 (在OP的评论之后):是的,你可以写:
Predicates.containsPattern("(?i)^Xyz"))
(请参阅 Pattern 的文档:不区分大小写的匹配也可以通过嵌入的标志表达式 (?i) 来启用。)但它的 IMO 不那么自我解释,加上编译
Pattern
在循环中使用时,可以将第一个示例缓存到一些私有(private)静态最终常量,这可以提高性能。
关于guava - 使用 Google Guava 进行不区分大小写的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560635/