过滤和转换Map
值的最有效方法是什么?我习惯使用FluentIterable
进行这类操作,但它不适用于Map
。
Maps.transformValues(Maps.filterValues(map, predicate), function)
是最佳选择吗?
答案 0 :(得分:1)
基本的解决方案是,如果您知道使用Map
的唯一方法是完全迭代条目ONCE,那么你没关系。但是,如果您打算使用get
,put
或者您可能会多次迭代它,建议您创建新的Map
,以便过滤和转换的工作只进行一次
Maps.newHashMap(Maps.transformValues(Maps.filterValues(map, predicate), function));
此处filter
和transform
的顺序正确无误,因此您不会transform
已过滤的值。