我有一个使用 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/