Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用番石榴是个坏主意吗;s映射#filterKeys()?_Java_Guava - Fatal编程技术网

Java 使用番石榴是个坏主意吗;s映射#filterKeys()?

Java 使用番石榴是个坏主意吗;s映射#filterKeys()?,java,guava,Java,Guava,我有一个使用guava的Maps#filterKeys()的直接用例,但我想知道从性能的角度看这是否是个坏主意?我需要迭代过滤后的映射 查看我特别关注的javadoc-当不需要实时视图时,复制过滤后的地图并使用副本可能会更快。这是否意味着在过滤后的视图上迭代会非常慢,最好将其复制到另一个地图并使用它,还是根本不使用番石榴更好 此外,什么时候需要实时视图?它不一定会“超慢”。在过滤视图上迭代的执行方式就像使用if条件在原始地图上迭代以检查过滤条件一样 如果您的过滤器消除了大部分元素,并且您需要在映

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

查看我特别关注的javadoc-
当不需要实时视图时,复制过滤后的地图并使用副本可能会更快。
这是否意味着在过滤后的视图上迭代会非常慢,最好将其复制到另一个地图并使用它,还是根本不使用番石榴更好


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

它不一定会“超慢”。在过滤视图上迭代的执行方式就像使用
if
条件在原始地图上迭代以检查过滤条件一样

如果您的过滤器消除了大部分元素,并且您需要在映射上迭代多次,那么是的,这将比生成一个过滤副本慢


如果备份映射正在更改,并且您希望筛选映射反映这些更改,则需要实时视图。

在我的情况下,在获得筛选映射后,不要使用备份映射。这取决于您需要对filterKeys()使用什么条件。例如,当您有要迭代的密钥子集时,结果的复杂性要差得多。这个问题应该提供完整的例子。此外,如果原始地图在您仍在使用过滤视图时发生更改(这种情况很少),则需要实时视图,filterKeys主要有助于减少复制地图所导致的性能问题。