java - 使用 Guava 的 Maps#filterKeys() 是个坏主意吗?

标签 java guava

我有一个使用 guava 的 Maps#filterKeys() 的直接用例,但我想知道从性能的角度来看这是否是个坏主意?我需要遍历过滤后的 map 。

查看我特别关注的 javadoc - 当不需要实时 View 时,复制过滤后的 map 并使用副本可能会更快。 这是否意味着迭代过滤后的 map view 会非常慢,最好将它复制到另一个 map 并使用它,还是根本不使用 guava 更好?

还有,什么时候需要实时取景?

最佳答案

它不一定会“ super 慢”。迭代过滤后的 View 就像用 if 条件迭代原始 map 来检查过滤条件一样。

如果您的过滤器消除了大部分元素,并且您需要多次遍历 map ,那么是的,与制作一次过滤副本相比,这会很慢。

如果背景 map 发生变化并且您希望过滤后的 map 反射(reflect)这些变化,则需要实时取景。

关于java - 使用 Guava 的 Maps#filterKeys() 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167762/

相关文章:

java - 监听 Swing 对象上所有更改事件的通用方法

Java鼠标事件右键单击

Java将两个不同大小的List合并为HashMap

java - Google Guava/提供功能集合类型的实现

java - 从 map 中查找前 100 个元素的最有效方法

java - 在我的情况下,CacheBuilder 可以替代 MapMaker 吗?

java - setText 使应用程序崩溃

Java Swing树: dynamically changing needed?

java - 验证字符串是否为正数、null/空字符串

java - Utils 类中的谓词应该作为常量或静态方法提供?