使用番石榴的 Maps#filterKeys() 是个坏主意吗?
Is it a bad idea to use guava's Maps#filterKeys()?
我有一个使用番石榴 Maps#filterKeys()
的直接用例,但我想知道从性能的角度来看这是否是个坏主意?我需要遍历过滤后的地图。
查看我特别关心的 javadoc - When a live view is not needed, it may be faster to copy the filtered map and use the copy.
这是否意味着迭代筛选视图会非常慢,最好将其复制到另一个地图并使用它还是根本不使用番石榴更好?
还有,什么时候需要实时取景?
不一定会 "super slow." 迭代过滤后的视图就像用 if
条件迭代原始地图来检查过滤条件一样。
如果您的过滤器消除了大部分元素,并且您需要多次遍历地图,那么是的,与制作一次过滤副本相比,这会很慢。
如果背景地图发生变化并且您希望过滤后的地图反映这些变化,则需要实时取景。
我有一个使用番石榴 Maps#filterKeys()
的直接用例,但我想知道从性能的角度来看这是否是个坏主意?我需要遍历过滤后的地图。
查看我特别关心的 javadoc - When a live view is not needed, it may be faster to copy the filtered map and use the copy.
这是否意味着迭代筛选视图会非常慢,最好将其复制到另一个地图并使用它还是根本不使用番石榴更好?
还有,什么时候需要实时取景?
不一定会 "super slow." 迭代过滤后的视图就像用 if
条件迭代原始地图来检查过滤条件一样。
如果您的过滤器消除了大部分元素,并且您需要多次遍历地图,那么是的,与制作一次过滤副本相比,这会很慢。
如果背景地图发生变化并且您希望过滤后的地图反映这些变化,则需要实时取景。