Map 番石榴-过滤和变换映射

Map 番石榴-过滤和变换映射,map,filtering,guava,transformation,Map,Filtering,Guava,Transformation,过滤和转换映射值的最有效方法是什么。我习惯于使用fluentiable进行此类操作,但它不适用于Map Maps.transformValues(Maps.filterValues(map,predicate),function)是最佳选择吗?基本解决方案是,如果您知道使用map的唯一方法是只迭代条目一次,那么您就可以使用它了。但是,如果您计划使用get,put,或者您可能会多次迭代它,则建议创建一个新的映射,以便只执行一次过滤和转换工作 Maps.newHashMap(Maps.transfo

过滤和转换
映射值的最有效方法是什么。我习惯于使用
fluentiable
进行此类操作,但它不适用于
Map


Maps.transformValues(Maps.filterValues(map,predicate),function)
是最佳选择吗?

基本解决方案是,如果您知道使用
map
的唯一方法是只迭代条目一次,那么您就可以使用它了。但是,如果您计划使用
get
put
,或者您可能会多次迭代它,则建议创建一个新的
映射
,以便只执行一次过滤和转换工作

Maps.newHashMap(Maps.transformValues(Maps.filterValues(map, predicate), function));

filter
transform
的顺序在这里是正确的,因此您不会
transform
本应过滤的值。

快速查看显示
transformValues
filterValues
返回装饰符。因此,
get
put
等的复杂性。。。取决于
过滤器
转换
功能的复杂性。完整副本可能更有效。您的意思是我应该在末尾创建一个新映射,还是在
filterValues
之后创建一个新映射?这取决于您如何使用
映射。decorator
Map
s的主内存开销是decorator函数。但是,当您访问decorator
映射时,通常会遇到这两个函数的复杂性。