使用番石榴的Maps#filterKeys()是不是一个坏主意?

时间:2015-07-01 17:16:46

标签: java guava

我有一个使用番石榴Maps#filterKeys()的直接用例,但我想知道从性能角度来看这是不是一个坏主意?我需要迭代过滤后的地图。

查看我特别关注的javadoc - When a live view is not needed, it may be faster to copy the filtered map and use the copy.这是否意味着迭代过滤后的视图会变得非常慢并且最好将它复制到另一个地图并使用它或者是最好不要使用番石榴?

此外,什么时候需要实时视图?

1 个答案:

答案 0 :(得分:3)

它不一定非常慢。"迭代过滤后的视图就像执行迭代原始地图一样if条件来检查过滤条件。

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

如果支持地图正在发生变化,并且您希望过滤后的地图能够反映这些变化,则需要实时视图。