目前我正在使用下面的一段代码来创建一个过滤器,在 map 中匹配并提供一个过滤后的结果集列表。

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/

10-12 13:36