guava - 使用 Google Guava 进行不区分大小写的过滤

标签 guava

当前,我正在使用以下代码在映射中创建过滤器以匹配并提供过滤后的结果集列表。

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/

相关文章:

java - 如何连接两个参数化类型的数组(在 Guava 中)

java - 使用 com.google.common.graph.ImmutableDirectedGraph 的 Maven 依赖项

java - 为什么 Predicates.instanceOf 返回 false?

java - Guava、Files.readLines() 和空白

java - 在 Java 集合中查找最近的对象

Java 或 guava 映射实现与指向单个值的多个键一起使用

java - 具有多个拆分参数的 Guava 拆分器

java - Java中基于平面文件的内存读/写缓存

java - 一旦对 Settable Future 对象调用 setException 方法,会发生什么?

java - 在多次 POST/DELETE/PUT 后仅运行一次函数(例如清理)